给出两个向量,它们是索引列表的组成部分,如何用它们成对对矩阵进行索引?如果我照原样使用它们,我会得到笛卡尔积(与其他语言的花哨索引一致):
> x
[,1] [,2] [,3]
[1,] 0.4636395 0.7937225 0.81670694
[2,] -1.0591770 0.7515119 1.31597748
[3,] -0.5215888 1.2026196 -0.03518676
> x[c(1,2), c(1, 1)]
[,1] [,2]
[1,] 0.4636395 0.4636395
[2,] -1.0591770 -1.0591770
我真的想要
> c(x[1, 1], x[2, 1])
[1] 0.4636395 -1.0591770
在Julia中,我可以写得很简洁:
julia> x[CartesianIndex.([1, 2], [1, 1])] # not the same x here, but still 3x3
2-element Array{Float64,1}:
0.5815007881748451
0.6563715338911154
在Matlab中,有人告诉我等效的方法是手动将其转换为线性索引:
x(sub2ind(A, [1, 2], [1, 1]))
如何在R中做到这一点?
(对于this answer,这实际上是一个不同的问题,但是我确实无法通过搜索轻松地找到解决方案。特别是没有重复项,即使我以为一定是一个常见问题。“ R”不是易于搜索的关键字没有帮助。)
答案 0 :(得分:1)
“索引”在R中通常称为"subsetting"。在这种情况下,您必须通过矩阵进行子集化。通过cbind
将向量放在一起可以最容易地构建它们:
> cbind(c(1,2), c(1, 1))
[,1] [,2]
[1,] 1 1
[2,] 2 1
> x[cbind(c(1,2), c(1, 1))]
[1] 0.4636395 -1.0591770