我在使用R中的data.table
时遇到了一些麻烦,无法对表达式进行求值。下面是一些代码:
dtb = data.table(a=1:100, b=100:1, id=1:10)
dtb[,`:=`(c=a+b, d=a/b),by=id] #this works fine
expr = expression({`:=`(c=a+b, d=a/b)}) #try to couch everything in an expression
dtb[,eval(expr),by=id] #this does not work
Error in `:=`(c = a + b, d = a/b) :
unused argument(s) (c = a + b, d = a/b)
expr = expression(`:=`(c=a+b, d=a/b)) #this works fine
dtb[,eval(expr),by=id]
为什么包含
{}
会使它出错?
data.table
中使用eval
是正确的方法:) - Alexdtb[,{\
:=`(c=a+b, d=a/b)},by=id]` 不能工作,对吗? - GSee