2014-01-25 52 views
3

可以執行鏈接summarise操作data.frame彙總dplyr中的值 - 崩潰RStudio

我data.frame具有結構:

data_df = tbl_df(data)  
data_df %.% 
     group_by(col_1) %.% 
     summarise(number_of= length(col_2)) %.% 
     summarise(sum_of = sum(col_3)) 

這將導致RStudio遇到一個fatal error - R Session Aborted消息

通常與plyr我將包括這些summarise功能沒有問題。

UPDATE

數據爲here.

代碼是:

library(dplyr) 

orth <- read.csv('orth0106.csv') 
orth_df = tbl_df(orth) 


orth_df %.% 
    group_by(Hospital) %.% 
    summarise(Procs = length(Procedure)) %.% 
    summarise(SSIs = sum(SSI)) 
+0

你能否提供一個可重現的例子來重現錯誤? – marbel

+0

@ martin-bel - 現在包括數據和代碼。 – John

+0

未來,請直接在github上提交這樣的bug。我已經投票結束這個問題,因爲一旦dplyr的下一個版本發佈(即將推出),它將不再適用 – hadley

回答

10

我可以重現錯誤的Windows 7計算機上運行RStudio 0.97.551

這可能是因爲你打電話summarise並鏈接到不存在的東西。你可以用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)) 

## Source: local data frame [18 x 3] 
## 
## Hospital Procs SSIs 
## 1   A 865 80 
## 2   B 1069 38 
## 3   C 796 24 
## 4   D 891 35 
## 5   E 997 39 
## 6   F 550 30 
## 7   G 2598 128 
## 8   H 373 27 
## 9   I 1079 70 
## 10  J 714 30 
## 11  K 477 30 
## 12  L 227 2 
## 13  M 125 6 
## 14  N 589 38 
## 15  O 292 3 
## 16  P 149 9 
## 17  Q 1984 52 
## 18  R 351 13 

在任何情況下,這似乎是RStudio或dplyr錯誤。我會向哈德利提出一個問題,因爲他可能在乎任何一方面。 https://github.com/hadley/dplyr/issues

編輯這(首次呼叫)也會導致RGUI(窗口)和終端崩潰以及上:

R version 3.0.2 (2013-09-25) 
Platform: i386-w64-mingw32/i386 (32-bit) 

這表示dplyr問題哈德利和羅曼會想知道。

爲了讓我的第一點,我們運行:

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

所以你抓住:

Hospital Procs 
1   A 865 
2   B 1069 
3   C 796 
. 
. 
. 
17  Q 1984 
18  R 351 

當您使用%.% summarise(SSIs = sum(SSI))並沒有SSI到得到。所以想到的比喻是serial vs. parallel wiring Christmas lights%.% = serialggplot() + = parallel。這是一個非程序員對事物的理解,R大師可能會來告訴我我很愚蠢,但現在這是你得到的最好的理論。

+0

DOH!現在我明白了。不存在於新創建的df中。 – John

+0

你錯過了一點,或者不瞭解鏈接是什麼。看到我最新的照片編輯。 –

+1

約翰我開了一個問題[這裏](https://github.com/hadley/dplyr/issues/212)。 –