4
我有兩個data.tables,一個有另一個行/列的子集。我想小data.table的值添加到一個較大的值:在兩個data.tables中添加值
DT1 <- as.data.table(matrix(c(0, 1, 2, 3), nrow=2, ncol=2,
dimnames=list(c("a", "b"), c("a", "b"))), keep=T)
DT2 <- as.data.table(matrix(c(0, 0, 1, 2, 2, 1, 1, 0, 3), nrow=3, ncol=3,
dimnames=list(c("a", "b", "c"), c("a", "b", "c"))), keep=T)
DT1
# rn a b
#1: a 0 2
#2: b 1 3
DT2
# rn a b c
#1: a 0 2 1
#2: b 0 2 0
#3: c 1 1 3
我想DT1添加到DT2讓我得到
# rn a b c
#1: a 0 4 1
#2: b 1 5 0
#3: c 1 1 3
我知道我可以用DT1 DT2覆蓋的值很容易:
DT2[DT1, names(DT1) := DT1, on="rn"]
我希望這樣的事情會的工作:
DT2[DT1, names(DT1) := DT1 + .SD, on="rn"]
...但它沒有。雖然這可能會有一些簡單的變化,但是,對嗎?
雖然這可能更復雜一些,但它比Richard的答案快得多 - 謝謝! – Stan