根据列向量子集矩阵

Jam*_*mes 3 r matrix

我有一个矩阵,H.我想从每一行中选择一个值,从矢量P中选择一列.

H = matrix(data=runif(6),ncol=2)
P = c(2,1,2)
Run Code Online (Sandbox Code Playgroud)

我之后的输出是一个包含的向量

c(H[1,P[1]],H[2,P[2]],H[3,P[3]])
Run Code Online (Sandbox Code Playgroud)

我正在处理更大的数据,所以这样做的通用方法会很好.

这是有效的diag(H[,P]),但是:a)我不明白为什么H[,P]返回一个方阵,而b)我宁愿不使用额外的函数(在这种情况下diag).

如果以前曾经问过我,我很抱歉.

Dav*_*urg 6

尝试

H[cbind(seq_len(nrow(H)), P)]
## [1] 0.6733731 0.7396847 0.5953580
Run Code Online (Sandbox Code Playgroud)

这里我们按照中指示的连续行和列进行索引 P


关于你的问题,所以H[, P]返回矩阵的原因是因为你告诉R:

从列"H"中选择列中的所有行:2,1,2

因此,您得到的结果是具有相同的第一列和第三列的矩阵.