假设我从
mtcarsDT<-data.table(mtcars)
我想要相当于
mtcarsDT[,.(mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb, newcol=myFunc())]
但我只想输入一些简短的内容,mtcarsDT[,.(.SD, newcol=myFunc())
但语法当然不起作用。
我通常的方法是
c(.SD, .(newcol = f())
将函数应用于多个列时,例如,这种方法也很有用
c(
g = lapply(.SD, g),
f = lapply(.SD, f),
.(N = .N)
)
此语法有效是因为
.SD
已经是清单;c()
可用于合并列表;和.()
是list()
为了方便内部提供的别名DT[...]
。细节。从?data.table
只要
j
返回alist
,列表中的每个元素都会成为result中的一列data.table
。这是默认的增强模式。
在第一个插图中,类似的行出现了两次vignette("datatable-intro")
,但不幸的是,没有像OP这样的示例。(也许应该添加一个?)
我并不是真的想要创建一列,我只想查看现有列旁边的表达式结果,而不必保存该列然后在以后删除它
对于此用例,最佳解决方案可能是进行浅表复制。该功能尚不可用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句