我有一个函数myFun(a,b,c,d,e,f,g,h)
,其中包含其参数的矢量化表达式。
我想添加一个新列:的列名data$result <- with(data, myFun(A,B,C,D,E,F,G,H))
在哪里。我正在使用,但答案也很受欢迎。A,B,C,D,E,F,G,H
data
data.table
data.frame
到目前为止,输入参数列表(列名)可能很乏味,我想提高可读性。有没有更好的办法?
> myFun <- function(a,b,c) a+b+c
> dt <- data.table(a=1:5,b=1:5,c=1:5)
> with(dt,myFun(a,b,c))
[1] 3 6 9 12 15
我最想做的事情是:
dt[isFlag, newCol:=myFun(A,B,C,D,E,F,G,H)]
然而:
> dt[a==1,do.call(myFun,dt)]
[1] 3 6 9 12 15
请注意,j
表达式似乎忽略了子集。结果应该是公正的3
。