我在 dplyr 返回错误“索引超出范围”时遇到了一些问题。
这似乎只发生在长变量名的情况下。显然,这可以通过重命名有问题的变量来解决,但我想将其放在这里以帮助其他人解决相同的问题,因为返回的错误不提供信息。
> test <- data.frame(name = rep(c("orange", "pear", "apple", "bear"), 2) ,
+ value = rnorm(8), stringsAsFactors = FALSE)
>
> group_by(test, name) %>% summarise(mean(value))
Source: local data frame [4 x 2]
name mean(value)
1 apple -0.34881128
2 bear 1.01526013
3 orange -0.68778455
4 pear -0.06635953
>
> test$reallyreallyreallyreallyreallylongvarname <- test$name
> group_by(test, reallyreallyreallyreallyreallylongvarname) %>% summarise(mean(value))
Error in eval(expr, envir, enclos) : index out of bounds
最佳答案
一个可能的解决方法是在 group_by()
中使用 quote()
。
> group_by(test, quote(reallyreallyreallyreallyreallylongvarname)) %>% summarise(mean(value))
Source: local data frame [4 x 2]
quote(reallyreallyreallyreallyreallyl... mean(value)
1 apple -0.34881128
2 bear 1.01526013
3 orange -0.68778455
4 pear -0.06635953
关于r - dplyr group_by 可变长度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27483796/