首页 > 解决方案 > R data.table:如何使用作为向量提供的列名通过引用更新行?

问题描述

我想更新 data.table 的某些行。但是,我无法使用列名访问向量。

什么是正确的方法?

MWE:

require(data.table)
dt <- data.table(a=c(1,2), b=c(3,4))
cols <- colnames(dt)
vec <- c(9,10)
dt[2,(cols):= list(vec)] # Not working
dt[2,(..cols):= list(vec)] # Not working

标签: rdata.table

解决方案


只需稍作修改:

dt[2, (cols) := as.list(vec)]

要了解发生了什么,请比较两个版本:

as.list(vec)
# [[1]]
# [1] 9
# 
# [[2]]
# [1] 10

list(vec)
# [[1]]
# [1]  9 10

推荐阅读