I have two data.tables, and one has a subset of rows/columns of another. I'd like to add values of the smaller data.table to the values of the larger one:
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
I'd like to add DT1 to DT2 so that I get
# rn a b c
#1: a 0 4 1
#2: b 1 5 0
#3: c 1 1 3
I know I can overwrite values of DT2 with DT1 very easily:
DT2[DT1, names(DT1) := DT1, on="rn"]
I was hoping that something like this would work:
DT2[DT1, names(DT1) := DT1 + .SD, on="rn"]
...but it doesn't. There's probably some simple variation on this that would work, though, right?
See Question&Answers more detail:
os