data.table中的set() - 匹配名称而不是列号

时间:2016-08-17 09:04:27

标签: r data.table

使用set()提高效率以更新data.table所包含的值当列的顺序发生变化时,我遇到了问题。因此,为了防止我使用变通方法来匹配列名而不是列位置。 我想知道是否有更好的方法来解决集合查询的j部分中的列。

DT <- as.data.table(cbind( Period = 1:10, 
                                 Col.Name=NA))

set(DT, i = 1L , j = as.integer(match("Col.Name",names(DT))), value = 0)
set(DT, i = 3L , j = 2L, value = 0)

所以我想询问是否有针对此的data.table解决方法,也许是对已有的colnames进行快速匹配。

1 个答案:

答案 0 :(得分:1)

我们可以直接在&#39; j&#39;

中使用列名
set(DT, i = 1L , j = "Col.Name", value = 0)
DT
#    Period Col.Name
# 1:      1        0
# 2:      2       NA
# 3:      3       NA
# 4:      4       NA
# 5:      5       NA
# 6:      6       NA
# 7:      7       NA
# 8:      8       NA
# 9:      9       NA
#10:     10       NA