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

Posted

技术标签:

【中文标题】与 dplyr 的分组关联(仅适用于控制台)【英文标题】:Grouped correlation with dplyr (works only on console) 【发布时间】:2014-09-21 07:37:39 【问题描述】:

我正在尝试使用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

发生了什么事?

【问题讨论】:

我无法复制这个。您能否详细说明“在控制台中”与“在 RStudio 中”之间的区别是什么意思?作为预防措施,我会在新的会话中再次尝试两种方式。 @beginneR 谢谢,它有效。你能把你的评论变成答案吗? 【参考方案1】:

您的体验与同时加载 plyrdplyr 有关。由于这两个包都有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 指定包。

【讨论】:

如何为每个组生成一个相关矩阵,所以如果 set.seed(123) xx = data.frame(group = rep(1:4, 100), a = rnorm(400) , b = rnorm(400), c=rnorm(400) @spindoctor,最好在单独的问题中提出

以上是关于与 dplyr 的分组关联(仅适用于控制台)的主要内容,如果未能解决你的问题,请参考以下文章

Swagger 仅适用于 apicontroller,不适用于 mvc 控制器?

在 C# 控制台应用程序中居中文本仅适用于某些输入

是否有仅适用于控制台应用程序的 laravel 版本? [关闭]

FCM - 推送通知仅适用于控制台而不适用于邮递员

UIScrollView 是不是仅适用于嵌入在导航控件中的视图控制器?

segues 仅适用于导航控制器吗? [关闭]