如何在同一个调用中使用在dplyr :: do()中创建的列?

时间:2015-02-05 20:06:56

标签: r dplyr

mutate能够引用在同一个调用中创建的列(例如mutate(flights, gain = arr_delay - dep_delay, gain_per_hour = gain / (air_time / 60)))。

我正在尝试使用与do()一样的工作。以下只是一个抛弃的例子 - 我保证我有充分的理由想要这样做:

data.frame(n=round(runif(1000,20,100),0)) %>%
group_by(n) %>%
do(
  x=mean(rnorm(.$n,10,1)),
  y=mean(rnorm(.$n,20,x))
)

当然,我收到错误Error in rnorm(.$n, 20, x) : object 'x' not found。如果我尝试使用.$x,我会获得Error in rnorm(.$n, 20, .$x) : invalid arguments。我无法找到任何与此相关的文档,也许这是不可能的 - 但它似乎应该是。

1 个答案:

答案 0 :(得分:2)

如果你不想理解你想要实现什么,如果你将do()链接到另一个do(),那么结果就是y。

data.frame(n=round(runif(1000,20,100),0)) %>%
group_by(n) %>% do(
  x=mean(rnorm(.$n,10,1))
) %>% do(
  y=mean(rnorm(.$n,20,.$x))
)