r - 根据列索引向量选择 data.table 值

标签 r select data.table

如何从 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/

相关文章:

r - 根据R dplyr中的多列选择每组中具有最大值的行

减少 grid.arrange 图之间的空间

mysql - 从表中选择数据时出现问题?

mysql - PHP 从 3 个表中选择

r - 运行长度的累积和。这个循环可以矢量化吗?

R data.table - 如何使用分配的变量作为列名来计算摘要_和_分组

r - 使用 dplyr 在多列上按组插入 NA

r - 创建类或组散点图

java - 如何从mysql中的用户那里获取WHERE值

r - 我如何融化具有连接列名称的 data.table