调用plyr包的count()函数提示‘object not found’的技术求助
解决plyr包count()函数"object not found"报错问题
我来帮你搞定这个报错!你遇到的问题是因为对plyr包中count()函数的参数用法理解错了,咱们一步步拆解:
报错原因
plyr的count()函数第一个参数需要传入完整的数据框,后续参数是你要分组统计的变量名(可以是不带引号的列名、字符串向量,或者用plyr特有的.(x,y)语法)。而你直接传入df$x和df$y两个单独向量时,函数会把第二个向量df$y当成一个变量名,去第一个向量df$x里找这个变量,自然找不到,所以抛出"object not found"错误。
正确的写法
下面是几种可行的正确用法,任选其一就行:
- 传入数据框+不带引号的变量名
library(plyr) x=c(rep(1,5), rep(2,5)) y=c("a", "a", "b", "c", "d", "b", "a", "c", "c" ,"c") df=data.frame(x,y) # 用c()包裹要统计的变量名 df2 <- count(df, c(x, y))
- 传入数据框+字符串向量指定列名
df2 <- count(df, c("x", "y"))
- 用plyr的
.(x,y)语法指定变量
df2 <- count(df, .(x, y))
执行后得到的结果
无论用哪种方法,都会得到你想要的分组统计结果:
x y freq 1 1 a 2 2 1 b 1 3 1 c 1 4 1 d 1 5 2 a 1 6 2 b 1 7 2 c 3
额外小提示
如果非要用单独向量作为输入,也可以把两个向量先组合成一个临时数据框再传入:
df2 <- count(data.frame(x = df$x, y = df$y))
不过这种写法不如直接用原数据框简洁,更推荐前面的几种方法。
内容的提问来源于stack exchange,提问作者Spaniel
相关产品推荐
相关产品推荐

