2017-04-21 90 views
0

我有一個關於dplyr的問題。當給定的數據幀my_data這兩個語句之間有什麼區別(R/dplyr)

library(dplyr) 
set.seed(20160229) 
my_data = data.frame(
    y=c(rnorm(1000), rnorm(1000, 0.5), rnorm(1000, 1), rnorm(1000, 1.5)), 
    x=c(rep('a', 2000), rep('b', 2000)), 
    m=c(rep('i', 1000), rep('j', 2000), rep('i', 1000))) 

殼體1:

pdat <- my_data %>% 
    group_by(x, m) %>% 
    do(data.frame(loc = density(.$y)$x, 
       dens = density(.$y)$y)) 

和 殼體2:

pdat <- my_data 
pdat <- group_by(my_data, x, m) 
do(data.frame(pdat,loc=density(pdat$y)$x),dens=density(pdat$y)$y) 

爲什麼這些語句不同?如何改變案例2以匹配案例1?

回答

1

您致電do時缺少.data的說法。您需要將其放入,如在「案例1」中,或者明確提供。嘗試是這樣的:

do(.data = pdat, data.frame(loc = density(.$y)$x, dens = density(.$y)$y)) 

而現在,他們一致:

my_data %>% 
group_by(x, m) %>% 
do(data.frame(loc = density(.$y)$x, 
      dens = density(.$y)$y)) -> a 

b <- do(.data= pdat, data.frame(loc = density(.$y)$x, dens = density(.$y)$y)) 

identical(a,b) # TRUE 
+0

感謝您的及時回覆。當我評估 do(.data = pdat,as.data.frame(loc = density(。$ y)$ x,dens = density(。$ y)$ y)) 引發以下錯誤 Error in as.data.frame(,loc = density(。$ y)$ x,dens = density(。$ y)$ y): 參數「x」丟失,沒有默認值 當我指定x爲as時。 data.frame do(.data = pdat,as.data.frame(x = pdat,loc = density(。$ y)$ x,dens = density(。$ y)$ y)) 函數被評估,但a和b不同(a [8192 x 4],b [2048 x 4]。 這是關於什麼? – bigFin

+0

@FinlaySmall對不起,複製粘貼backfire。應該不是'as.data.frame',而是'數據.frame'!謝謝。 –

+0

好2去,TY! – bigFin

相關問題