与dplyr分组相关(仅适用于控制台)

Fer*_*ndo 5 r plyr dataframe dplyr

我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)

如果我在RStudio中使用相同的代码,我得到:

   cor(a, b)
1 0.02739193
Run Code Online (Sandbox Code Playgroud)

发生了什么?

tal*_*lat 11

您所遇到的与同时加载plyrdplyr加载有关.由于两个软件包都具有summarize功能,因此如果您未明确指定要使用的软件包,则可能会发生冲突.对于示例数据,这意味着:

require(dplyr)
set.seed(123)
xx = data.frame(group = rep(1:4, 100), a = rnorm(400) , b = rnorm(400))
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

或使用 plyr

gp = group_by(xx, group)
plyr::summarize(gp, cor(a, b))
#   cor(a, b)
#1 0.02739193
Run Code Online (Sandbox Code Playgroud)

因此要么避免加载两个包,要么使用package :: function指定包.