我想使用mutate_()創建多個列,其中每個列都基於使用不同輸入調用的自定義函數。我可以使用paste()創建多個帶引號的函數調用,但這不起作用,因爲dplyr的NSE需要公式(〜)而不是帶引號的字符串才能找到該函數。我該如何寫下面的「dots =」這一行,以便找到該功能?我試着用〜,as.formula()和lazyeval :: interp()來試驗,但沒有任何工作。我的實際「前綴」是一個長向量,所以我不想單獨寫出每個新列的函數調用。由於使用dplyr非標準評估創建多個函數
library(dplyr)
library(lazyeval)
library(nycflights13)
myfunc = function(x, y) { x - y }
# this works
flights1 <- mutate(flights, dep_time_sched = myfunc(dep_time, dep_delay),
arr_time_sched = myfunc(arr_time, arr_delay))
# this doesn't - Error: could not find function "myfunc"
prefixes <- c('dep', 'arr')
dots = as.list(paste0('myfunc(',
paste0(prefixes, '_time'), ', ',
paste0(prefixes, '_delay)')))
flights2 <- mutate_(flights, .dots = setNames(dots, paste0(prefixes, '_time_sched')))
再次感謝@akrun。我已經添加了它。 – Frank