如何从 data.table
中选择值基于列索引向量。
我有一个与 data.table 中的行数相同长度的整数向量:
set.seed(100)
col.indexes <- sample(c(1:4), 150, replace = TRUE)
如何基于它创建值向量?例如这没有
for
环形:iris <- setDT(iris)
res <- c()
for(i in 1:150) {
res[i] <- iris[i, .SD, .SDcols = col.indexes[i]]
}
res <- unlist(res)
这大致基于这个问题:
How to subset the next column in R
最佳答案
我们可以按行序列进行分组并提取值
res <- iris[, col1 := col.indexes][, .SD[[col1[1]]], 1:nrow(iris)]$V1
或在
base R
,它可以以矢量化的方式完成iris <- setDF(iris)
iris[1:4][cbind(seq_len(nrow(iris)), col.indexes)]
关于r - 根据列索引向量选择 data.table 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58313278/