Попытка выбрать столбец объекта класса grouped_df
по индексу дает «Ошибка: индекс за пределами границ». Например,Indexing grouped_df object
x <- mtcars %>% group_by(am, gear) %>% summarise_each(funs(sum), disp, hp, drat)
class(x)
# "grouped_df" "tbl_df" "tbl" "data.frame"
# For some reason the first column can be selected...
x[1]
# Source: local data frame [4 x 1]
# Groups: am
# am
# 0
# 0
# 1
# 1
# ...but any index > 1 fails
x[2]
# Error: index out of bounds
# Coercing to data frame does the trick...
as.data.frame(x)[2]
# gear
# 3
# 4
# 4
# 5
#... and so does ungrouping
all(ungroup(x)[2] == as.data.frame(x)[2]) # TRUE
Это версия R 3.1.1 и dplyr 0.3.0.2. Я не уверен, является ли это ошибкой или преднамеренным. Есть ли веская причина, почему она работает именно так? Я предпочел бы не вспоминать разгруппировать свои кадры данных после использования dplyr
каждый раз, когда ...
Update Посмотрев немного дальше в этом, я думаю, что мотивация для определения [.grouped_df
this way для групп сохраняться при вызове, например x[1:3]
(который работает). Однако, когда индекс не является частью переменных группировки, выдается ошибка выше. Возможно, это может быть модифицирован таким образом, что в этом случае она вызывает [.tbl_df
и выбрасывает предупреждение в то же время ...
Update 2[.grouped_df
было изменено в версии развития dplyr (0.3.0.9000). Он по-прежнему вызывает ошибку, но теперь более ясен, указав, какие переменные группировки не были включены.
x[2]
# Error in `[.grouped_df`(x, 2) :
# cannot group, grouping variables 'am' not included
Лучшее решение, которое я нашел, так что мой код не откажет в этой ситуации должна включать %>% ungroup
в конце dplyr
командной цепи.
Использование версии R 3.1.0 для Windows с dplyr_0.2 Я могу получить доступ ко всем столбцам без проблем. –
Я также получаю эту ошибку, используя R 3.1.1 и dplyr 0.3.0.2 на Mac. – dhendrickson
Я получаю ту же ошибку с R 3.1.1 и dplyr 0.3.0.2 на Ubuntu, но я не думаю, что у меня была эта проблема, когда я использовал dplyr 0.2. Подмножество с использованием 'select()' dplyr' 'работает с негрупповыми переменными, но я не могу подмножество с помощью скобок или базовой функции subset(). Основываясь на [этой проблеме] (https://github.com/hadley/dplyr/issues/170), я предполагаю, что это преднамеренно, но ничего себе это не преткнуло меня какое-то время. –