gpt4 book ai didi

r - 在 R 中使用 data.table,我可以从表中选择可变列的向量吗?

转载 作者:行者123 更新时间:2023-12-04 11:02:43 25 4
gpt4 key购买 nike

假设我有一个像这样的表:

> A = data.table(c(1,2,3),c(4,5,6),c(7,8,9))
> A
V1 V2 V3
1: 1 4 7
2: 2 5 8
3: 3 6 9

我想选中第一行的第一列,第二行的第二列,第三行的第三列,得到结果:

> B
[1] 1 5 9

我试过类似的方法:

B = A[,c(1,2,3)]

但这行不通。是否有可能做到这一点? (显然在我的实际用例中,每行的列索引将是变量,但我可以保证长度等于表中行数的向量)

最佳答案

对元素进行子集化的向量化方法是将行索引和列索引作为矩阵提供

as.data.frame(A)[cbind(seq_len(nrow(A)), 1:3)]
#[1] 1 5 9

或将.SD转换为matrixdata.frame并使用行/列索引

A[, as.matrix(.SD)[cbind(1:3, 1:3)]]

或者在data.table中,循环传递ij索引,提取元素

A[, unlist(Map(function(i, j) .SD[i, j, with = FALSE], 1:3, 1:3), 
use.names = FALSE)]

关于r - 在 R 中使用 data.table,我可以从表中选择可变列的向量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58017609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com