неожиданный вывод из совокупности

Пока экспериментирую сaggregate для другого вопросаВотЯ столкнулся с довольно странным результатом. Я не могу понять почему и мне интересно, что я делаю совершенно неправильно.

Предположим, у меня естьdata.frame нравится:

df <- structure(list(V1 = c(1L, 2L, 1L, 2L, 3L, 1L), 
                     V2 = c(2L, 3L, 2L, 3L, 4L, 2L), 
                     V3 = c(3L, 4L, 3L, 4L, 5L, 3L), 
                     V4 = c(4L, 5L, 4L, 5L, 6L, 4L)), 
                  .Names = c("V1", "V2", "V3", "V4"), 
        row.names = c(NA, -6L), class = "data.frame")
> df
#   V1 V2 V3 V4
# 1  1  2  3  4
# 2  2  3  4  5
# 3  1  2  3  4
# 4  2  3  4  5
# 5  3  4  5  6
# 6  1  2  3  4

Теперь, если я хочу вывестиdata.frame с участиемуникальные строки с дополнительным столбцом, указывающим их частоту вdf, Для этого примера

#   V1 V2 V3 V4 x
# 1  1  2  3  4 3
# 2  2  3  4  5 2
# 3  3  4  5  6 1

Я получил этот вывод, используяaggregate экспериментируя следующим образом:

> aggregate(do.call(paste, df), by=df, print)

# [1] "1 2 3 4" "1 2 3 4" "1 2 3 4"
# [1] "2 3 4 5" "2 3 4 5"
# [1] "3 4 5 6"
#   V1 V2 V3 V4                         x
# 1  1  2  3  4 1 2 3 4, 1 2 3 4, 1 2 3 4
# 2  2  3  4  5          2 3 4 5, 2 3 4 5
# 3  3  4  5  6                   3 4 5 6

Итак, это дало мне вставленную строку. Итак, если бы я использовалlength вместоprint, он должен дать мне количество таких случаев, что является желаемым результатом, который имел место (как показано ниже).

> aggregate(do.call(paste, df), by=df, length)
#   V1 V2 V3 V4 x
# 1  1  2  3  4 3
# 2  2  3  4  5 2
# 3  3  4  5  6 1

И это, похоже, сработало. Тем не менее, когдаdata.frame размеры 4 * 2500, выходdata.frame 1 * 2501 вместо 4 * 2501 (все строки уникальны, поэтому частота равна 1).

> df <- as.data.frame(matrix(sample(1:3, 1e4, replace = TRUE), nrow=4))
> o <- aggregate(do.call(paste, df), by=df, length)
> dim(o)
# [1]    1 2501

Я протестировал с меньшими data.frames только с уникальными строками, и это дает правильный вывод (изменениеnrow=40, например). Однако, когда размеры матрицы увеличиваются, это, похоже, не работает. И я просто не могу понять, что происходит не так! Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос