【发布时间】:2019-09-18 18:19:15
【问题描述】:
类似于Replace a value in a datatable by giving the column index, 我想仅使用列索引将 data.table 中的列替换为同一 data.table 中的另一列。 (是的,尽管这通常不是一个好的做法。就我而言,这是唯一的方法)
DT <- data.table(A=1:5, B=6:10, C=10:14)
我想要
DT[, A:=C]
但不使用 A 和 C。仅使用它们的索引号 1 和 3。
编辑:需要详细说明我的用例。我有多个列需要被多个其他列替换。替换由 data.table 中的两列表示。
DT <- data.table(A=1:5
, B=6:10
, C=10:14
, D=15:19
, E=20:24
, F=25:29
, G=c(1,2,NA,NA,NA)
, H=c(3,4,NA,NA,NA))
> DT
A B C D E F G H
1: 1 6 10 15 20 25 1 3 # --> column 1 (A) should be replaced by column 3 (C)
2: 2 7 11 16 21 26 2 4 # --> column 2 (B) should be replaced by column 4 (D)
3: 3 8 12 17 22 27 NA NA
4: 4 9 13 18 23 28 NA NA
5: 5 10 14 19 24 29 NA NA
列 G 表示需要替换的列。 H 列表示将替换 G 列中指示的列。处理包含数千列的 data.table。而且我知道列 H 和 G 的名称,所以它们不需要是动态的。
期望的输出:
> desired_output1:
A B C D E F G H
1: 10 15 10 15 20 25 1 3 #all of column A was replaced by column C
2: 11 16 11 16 21 26 2 4 #all of column B was replaced by column D
3: 12 17 12 17 22 27 NA NA
4: 13 18 13 18 23 28 NA NA
5: 14 19 14 19 24 29 NA NA
> desired_output2:
A B C D E F G H
1: 10 6 10 15 20 25 1 3 # col A for this row was replaced by col C
2: 2 16 11 16 21 26 2 4 # col B for this row was replaced by col D
3: 3 8 12 17 22 27 1 2
4: 4 9 13 18 23 28 NA NA
5: 5 10 14 19 24 29 NA NA
【问题讨论】:
-
不确定。这是你想要的吗?
DT[,3] <- DT[,1]? -
我认为这是
DT[,1] <- DT[,3] -
是的,是的,正确的。抱歉,我需要详细说明,因为我需要它更具动态性,因为它的多个列被多个其他列替换,基于两列的值。好的,我已经编辑了我的问题。
标签: r indexing dynamic replace data.table