2
在dplyr::do()
,有沒有辦法像其他dplyr函數一樣訪問.data
上下文中的變量?例如,假設我有一個數據幀:dplyr do()沒有點代詞?
> 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,但不知道爲什麼我的 情況是不同的。