使用索引填充列

时间:2015-07-24 15:21:31

标签: r data.table

给出以下数据框:

df1 <- data.table("1A"=c(0,0,0,0),"1B"=c(1:4),"2A"=c(0,0,0,0), "2B"=c(1:4))
df2 <- data.table("1A"=c(1:4),"2A"=c(1:4))
> df1
   1A 1B 2A 2B
1:  0  1  0  1
2:  0  2  0  2
3:  0  3  0  3
4:  0  4  0  4
> df2
    1  2
 1: 1  1
 2: 2  2
 3: 3  3
 4: 4  4

包含标识符“A”的目标列使用以下索引标识:

indx = grep("A", colnames(df1))
> indx
[1] 1 3

我试图用相同的顺序填充'indx'标识的列的值和来自df2的列,而不更改df1的colnames。那样:

 > df1
       1A 1B 2A 2B
    1:  1  1  1  1
    2:  2  2  2  2
    3:  3  3  3  3
    4:  4  4  4  4

请注意,这是一个简化的例子,我的实际数据包含大约50个我需要填写的列,所以我需要一个编程方法。

非常感谢提前!

1 个答案:

答案 0 :(得分:3)

受@ Frank的评论启发 - 同样适用于常规:=语法,并且不会引入额外的副本:

df1[, (indx) := df2]