我正在尝试基于列中的值是否匹配外部变量来更新data.table中的列。我遇到的问题是在data.table语法中使用全局变量作为列名。
指定列名可以按预期显式工作并更新该列。
dt[,`1:4880` := ifelse(`1:4880`==allele, 2, 1)]
但是,当通过变量引用它时,我无法更新该列:
colname="1:4880"
dt[,..colname := ifelse(..colname==allele, 2, 1)]
而不是更新变量名所描述的列中的值,而是将输出写入df $ .. colname。奇怪的是,输出是正确的,因此ifelse函数可以按预期运行,它只是将输出写入错误的列名。
有没有办法使:=运算符识别指定为变量的列名?
在上lhs
,我们可以使用包裹()
以评估值,并在中使用get
或指定它.SDcols
dt[, (colname) := ifelse(.SD[[1]] ==allele, 2, 1), .SDcols = colname]
尚不清楚是allele
是另一列还是使用某个值创建的对象
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句