我正在尝试在 R 中复制 Excel 的"INDEX"函数,不幸的是我无法调整此板上提供的任何解决方案来解决我的问题。 我的第一个表包含列索引和行索引,这些索引基于从第二个表中选择值:
library(data.table)
table1<-data.table(data.frame(RowIndex = c(1,2,4,3), ColumnIndex = c(2,3,1,1)))
table2<-data.table(data.frame(columnAD = c("a","b","c","d"), columnEH = c("e","f","g","h"), columnIL = c("i","j","k","l")))
table1$MatchedData<-c("e","j","d","c")
我在Excel中所需的输出被添加为"匹配数据"。到目前为止,我已经尝试了与匹配或ifelse的不同组合,但没有一个成功。 提前感谢您的帮助
一种方法是使用by=
对每一行table1
table2
进行子集化:
library(data.table)
table1[, Result := table2[RowIndex, ColumnIndex, with = FALSE],
by = seq_len(nrow(table1))][]
RowIndex ColumnIndex Result
1: 1 2 e
2: 2 3 j
3: 4 1 d
4: 3 1 c
请注意,[]
只是在分配后通过引用打印table1
:=
.
使用基本 R 矩阵数字索引:
as.matrix(table2)[as.matrix(table1)]