Этот вопрос касается конкретной операции data.table.
У меня есть:
dataDT <- data.table(ID = c(1:3))
dataDT
> dataDT
ID
1: 1
2: 2
3: 3
Я хочу создать три новых столбца для хранения данных из 3 разных источников.
targetDT <- data.table(ID = c(1:3), ID1 = c(1:3), ID2 = c(1:3), ID3 = c(1:3))
targetDT
> targetDT
ID ID1 ID2 ID3
1: 1 1 1 1
2: 2 2 2 2
3: 3 3 3 3
Итак, я попробовал:
tempDT_1 <- data.table(ID1 = c(1:3)) # create dummy source 1
tempDT_2 <- data.table(ID2 = c(1:3)) # create dummy source 2
tempDT_3 <- data.table(ID3 = c(1:3)) # create dummy source 3
dataDT[, c("A", "B", "c") := list(tempDT_1, tempDT_2, tempDT_3)]
dataDT
> dataDT
ID A B c
1: 1 1,2,3 1,2,3 1,2,3
2: 2 1,2,3 1,2,3 1,2,3
3: 3 1,2,3 1,2,3 1,2,3
Почему вышеприведенный list(tempDT_1, tempDT_2, tempDT_3)
"не работает должным образом"?
Я видел, как люди делают такие вещи:
dataDT[, c("A", "B", "c") := list(sum(ID), mean(ID), func(ID))]
, который использует list()
для "привязки" новых значений.
Как мне исправить мои коды?