这两种说法(R/dplyr)有什么区别

这两种说法(R/dplyr)有什么区别,r,dplyr,R,Dplyr,我有一个关于dplyr的问题。当给定数据帧my_数据时 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)))

我有一个关于dplyr的问题。当给定数据帧my_数据时

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:

为什么这些说法不同?如何将案例2更改为与案例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

谢谢你的及时回复。当我计算do.data=pdat,as.data.frameloc=density.$y$x,dens=density.$y$y时,在as.data.frame,loc=density.$y$x,dens=density.$y$y:参数x缺失,当我为as.data.frame do.data=pdat,as.data.framex=pdat,loc=density.$y$x指定x时没有默认值,密度=密度。$y$y对函数进行计算,但a和b不同a[8192 x 4],b[2048 x 4]。这是怎么回事?@finlaysmal抱歉,复制粘贴适得其反。不应为as.data.frame,而应为data.frame!谢谢。很好,泰!!
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