我可以在运行RStudio 0.97.551的Windows 7计算机上重现错误。
可能是因为您正在调用
summarise
并链接到不存在的东西。您可以像我这样使用2个不同的列进行
summarise
。
url <- "https://raw.github.com/johnmarquess/some.data/master/orth0106.csv"
library(dplyr)
orth <- read.csv(url)
orth_df <- tbl_df(orth)
orth_df %.%
group_by(Hospital) %.%
summarise(Procs = length(Procedure), SSIs = sum(SSI))
无论如何,这似乎是RStudio或
dplyr
的一个bug。我会向Hadley提出问题,因为他可能在任何情况下都很关心。
https://github.com/hadley/dplyr/issues
编辑:这也导致rgui(Windows)和终端在以下情况下崩溃:
R version 3.0.2 (2013-09-25)
Platform: i386-w64-mingw32/i386 (32-bit)
这表示一个与
dplyr
相关的问题,Hadley 和 Romain 需要知道。
为了得到我的第一个观点,我们运行:
orth_df %.%
group_by(Hospital) %.%
summarise(Procs = length(Procedure))
Source: local data frame [18 x 2]
Hospital Procs
1 A 865
2 B 1069
3 C 796
4 D 891
5 E 997
6 F 550
7 G 2598
8 H 373
9 I 1079
10 J 714
11 K 477
12 L 227
13 M 125
14 N 589
15 O 292
16 P 149
17 Q 1984
18 R 351
%.% summarise(SSIs = sum(SSI))
应该在哪里查找 SSI
?
所以你认为会发生链式操作,但实际上,据我理解,%.%
不完全像 ggplot2
的工作方式,但类似。在 ggplot2
中,一旦你在初始映射中传递数据,则可以在稍后访问它。这里的 %.% 似乎修改抓取左侧块并对其进行操作,如下所示:
![enter image description here](https://istack.dev59.com/u9xgR.webp)
所以你正在获取:
Hospital Procs
1 A 865
2 B 1069
3 C 796
.
.
.
17 Q 1984
18 R 351
当你使用
%.% summarise(SSIs = sum(SSI))
时,如果没有可以获得的
SSI
,那么会出现这种情况。所以,我想到的比喻是
串联与并联的圣诞灯。
%.% = 串联
ggplot() + = 并联
。这是一个非程序员的理解,R专家可能会告诉我我很愚蠢,但目前这是你最好的理论。