首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据列向量子集矩阵

根据列向量子集矩阵
EN

Stack Overflow用户
提问于 2014-11-19 18:04:15
回答 2查看 841关注 0票数 4

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

代码语言:javascript
复制
H = matrix(data=runif(6),ncol=2)
P = c(2,1,2)

我想要的输出是一个包含以下内容的向量

代码语言:javascript
复制
c(H[1,P[1]],H[2,P[2]],H[3,P[3]])

我正在处理更大的数据,所以一种通用的方法是很好的。

这可以实现diag(H[,P]),但是:( a)我不明白为什么H[,P]返回一个方阵;( b)我不想使用额外的函数(在本例中是diag)。

如果以前有人问过这件事,我很抱歉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-19 18:08:29

试一试

代码语言:javascript
复制
H[cbind(seq_len(nrow(H)), P)]
## [1] 0.6733731 0.7396847 0.5953580

在这里,我们用P中指示的连续行和列来索引

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

从矩阵"H“中选择列中的所有行: 2、1、2

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

票数 7
EN

Stack Overflow用户

发布于 2014-11-19 18:12:32

但是:我不明白为什么H,P返回一个方阵,

H,P返回一个方阵,因为P是一个长度= 3的向量。这里,你基本上是说,你想要返回2,1,2列的矩阵。

如果您想要一个值,那么还需要传递一个行。如果你想让它随机选择一行,或者给它一个特定的行,你可以给它传递一个随机数或什么东西。例如,第1行:

代码语言:javascript
复制
H[1,P]

或随机(但在整个矩阵中相同)行:

代码语言:javascript
复制
H[floor(runif(1, 1, dim(H)[1])),P]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27023819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档