data.table
是一个很棒的R软件包,我正在开发一个库中使用它.到目前为止,一切进展顺利,除了一个并发症.与传统的数据帧相比,使用变量中保存的名称引用data.table
列似乎要困难得多(例如,数据帧的名称是colname="col"; df[df[,colname]<5,colname]=0
).
也许最让事情复杂的是data.table
中的语法明显缺乏一致性.在某些情况下,eval(colname)
和get(colname)
,甚至c(colname)
似乎有效.在其他情况下,DT[,colname, with=F]
是解决方案.但在其他函数中,例如set()
和subset()
函数,我根本没有找到解决方案.最后,前面(passing column names to data.table programmatically)讨论了一个极端的,尽管也是非常常见的用例,并且提出的解决方案,尽管显然是在做他们的工作,但似乎不是特别可读...
也许我把事情弄得太复杂了?如果有人能草草记下一张关于使用变量引用data.table
个列名的快速备忘单,用于不同的常见场景,我将不胜感激.
UPDATE:
我可以对列名进行硬编码的一些具体示例:
x.short = subset(x, abs(dist)<=100)
set(x, which(x$val<10), "val", 0)
现在假设distcol="dist"
,valcol="val"
.使用distcol
和valcol
(而不是dist
和val
)执行上述操作的最佳方法是什么?