Как установить несколько столбцов и выбранных строк в таблице данных для значения из другой таблицы данных

Вопрос несколько связан с этим вопросом (Как установить несколько столбцов в таблице данных для значений из разных столбцов в одной и той же таблице данных?).

set.seed(1)
df <- data.frame(matrix(sample(1:100,30),ncol=6))
# X1 X2 X3 X4 X5 X6
#1 27 86 19 43 75 29
#2 37 97 16 88 17 1
#3 57 62 61 83 51 28
#4 89 58 34 32 10 81
#5 20 6 67 63 21 25
library(data.table)
dt <- data.table(df)
df1 <- data.frame(matrix(sample(1:100,30),ncol=6))
df1
# X1 X2 X3 X4 X5 X6
#1 49 64 74 68 39 8
#2 60 75 58 2 88 24
#3 100 11 69 40 35 91
#4 19 67 98 61 97 48
#5 80 38 46 57 6 29
dt1 <- data.table(df1)

На этот раз я хочу изменить определенные строки и столбцы.

dt[1:3, c("X1","X2"), with = F] = dt1[1:3, c("X3","X5"), with = F]

Но это дает ошибку:

Error in `[<-.data.table`(`*tmp*`, 1:3, c("X1", "X2"), with = F, value = list( : 
 unused argument (with = F)

Я сделаю с данными, имеющими много столбцов. Я надеюсь, что имя столбца должно быть символом сначала.

1 ответ

Используя оператор =, как вы, вы пытаетесь присвоить значения желаемым местам в таблице данных. Вместо этого вы должны обновить свой data.table dt по ссылке с помощью оператора := внутри dt[...]. Небольшая адаптация комментария @thelatemail (вторая with = FALSE не нужна):

dt[1:3, c("X1","X2") := dt1[1:3, c("X3","X5"), with = FALSE]]

licensed under cc by-sa 3.0 with attribution.