我正在尝试使用dplyr
来计算分组相关性,但由于下面的代码仅适用于控制台,因此显然有问题:
require(dplyr)
set.seed(123)
xx = data.frame(group = rep(1:4, 100), a = rnorm(400) , b = rnorm(400))
gp = group_by(xx, group)
summarize(gp, cor(a, b))
group cor(a, b)
1 1 -0.02073084
2 2 0.12803353
3 3 0.06236264
4 4 -0.06181904
如果我在RStudio中使用相同的代码,我会得到:
cor(a, b)
1 0.02739193
发生了什么事?
答案 0 :(得分:11)
您遇到的问题与同时加载plyr
和dplyr
有关。由于两个软件包都具有summarize
功能,因此如果您未明确指定要使用的软件包,则可能会发生冲突。对于示例数据,这意味着:
require(dplyr)
set.seed(123)
xx = data.frame(group = rep(1:4, 100), a = rnorm(400) , b = rnorm(400))
按预期使用dplyr
:
gp = group_by(xx, group)
dplyr::summarize(gp, cor(a, b))
#Source: local data frame [4 x 2]
#
# group cor(a, b)
#1 1 -0.02073084
#2 2 0.12803353
#3 3 0.06236264
#4 4 -0.06181904
或使用plyr
gp = group_by(xx, group)
plyr::summarize(gp, cor(a, b))
# cor(a, b)
#1 0.02739193
因此要么避免加载两个包,要么使用package :: function指定包。