r - dplyr group_by 可变长度限制

标签 r dplyr

我在 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/

相关文章:

r - 让 table() 在 R 中返回零

r - 将多行的组合矩阵放入数据框的一列中,然后将其拆分

r - 随着排名的增加,值加 1

r - 如何根据 MuMIn model.avg() 摘要进行绘图

R:使用 dplyr 删除 data.frame 中的某些行

r - 如果匹配,数据框列上的 ifelse 将替换为日期时间列值

r - 使用 dplyr 过滤最大值之前的所有值

r - 在R中的函数中使用dplyr,然后使用for循环来执行该函数

r - 用 dplyr 大写

r - 如何按行在 data.table 中添加时间序列对象 (ts)?