r - 使用两个等长向量为行和列索引索引矩阵

标签 r matrix subset

假设您有一个 5x5 矩阵,并希望使用两个等长向量来选择值,一个代表索引行,另一个代表索引列:

m <- matrix(1:25, ncol = 5)
R <- c(1, 3, 5)
C <- c(2, 4, 4)

此处所需的输出是 6(第 1 行第 2 列)、18(第 3 行第 4 列)、20< 的单个向量(第 5 行,第 4 列)。

我能想到的最好的是:

diag(m[R,C])

但是这会构造一个大小为 length(R) * length(C) 的矩阵,因此如果 R 和 C 很长,就会很慢。

你是怎么做到的?

最佳答案

您可以使用 cbind(R, C)[:

建立索引
m[cbind(R,C)]

#> [1]  6 18 20

关于r - 使用两个等长向量为行和列索引索引矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60890372/

相关文章:

sql - R Markdown : Creating a SQL table then output it as a dataframe

c - 使用在 main1() 中生成的值并在 main2() 中使用它们

r - 无法从数据框中删除空白,因此无法找到均值

c - 使用 cblas_sgemm 执行复杂的矩阵操作以进行乘法

arrays - 在 Go 中使用 slice 进行子集检查

r - 比较 R 中的 svd 和 princomp

R - 带小计的数据透视表

r - 如何计算R中列中多个变量的频率

r - S4 方法参数的延迟评估

c++ - 在 Rcpp 函数中使用 Bool-Vector 进行子集化(Rcpp 初学者的问题...)