我试图使用mutate_()创建多个列,每个列都基于一个名为"custom function"的自定义函数并传入不同的输入参数。我可以使用paste()函数创建多个带引号的函数调用,但这种方法行不通,因为dplyr的NSE需要公式(~)而不是带引号的字符串才能找到该函数。我应该如何编写下面的"dots = "行,以便能够找到该函数?我尝试使用 ~、as.formula() 和lazyeval::interp(),但都无法正常工作。我的实际"prefixes"是一个很长的向量,所以我不想为每个新列单独编写函数调用。谢谢!
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')))