【发布时间】:2014-10-06 08:48:57
【问题描述】:
在dplyr::do() 中,有没有办法像其他dplyr 函数一样访问.data 上下文中的变量?例如,假设我有一个数据框:
> dd <- data.frame(a=1:5)
mutate() 以及其他函数可以在数据框的上下文中计算表达式:
> mutate(dd,a2=a*2)
a a2
1 1 2
2 2 4
3 3 6
4 4 8
5 5 10
但不是do:
> do(dd,data.frame(a2=a[1:2]*2))
Error in eval(expr, envir, enclos) : object 'a' not found
我可以使用with() 和点代词来实现我的目标:
> do(dd,with(.,data.frame(a2=a[1:2]*2)))
a2
1 2
2 4
我也不确定为什么这不起作用:
> do(dd,function(X) data.frame(a2=X$a[1:2]*2))
Error: Result must be a data frame
问题:
- 这种行为(范围)为何不同于
mutate、select等。 - 有没有优雅的解决方案或者我有
如果我不想继续使用,请继续使用
with().$variablename在表达式中? - 为什么不匿名 功能工作?似乎它可以工作here 但不知道为什么我的 情况不同。
【问题讨论】: