gpt4 book ai didi

r - 从 R 中矩阵的每一行中选择一个元素

转载 作者:行者123 更新时间:2023-12-01 22:42:50 25 4
gpt4 key购买 nike

问题同here ,但在 R 中。我有一个矩阵和一个向量,这样

length(vec) == nrow(mat)

我如何得到这样的向量

v[i] == mat[v[i],i]

我试图通过使用逻辑矩阵来实现这一点:

>a = matrix(runif(12),4,3)
a
[,1] [,2] [,3]
[1,] 0.6077585 0.5354680 0.2802681
[2,] 0.2596180 0.6358106 0.9336301
[3,] 0.5317069 0.4981082 0.8668405
[4,] 0.6150885 0.5164009 0.5797668
> sel = col(a) == c(1,3,2,1)
> sel
[,1] [,2] [,3]
[1,] TRUE FALSE FALSE
[2,] FALSE FALSE TRUE
[3,] FALSE TRUE FALSE
[4,] TRUE FALSE FALSE
> a[sel]
[1] 0.6077585 0.6150885 0.4981082 0.9336301

它选择了正确的元素但弄乱了顺序。我也考虑过使用 mapply,但我不知道如何让它遍历行,就像在 apply 中一样。

upd:@gsk3 建议使用 as.list(as.data.frame(t(a))) 这可行。但我仍然想知道是否有更矢量化的方式,没有列表。

最佳答案

我不是 100% 确定我理解你的问题,但看起来这可能很接近?

> b=c(1,3,2,1)

> i=cbind(1:nrow(a),b)

> a[i]

关于r - 从 R 中矩阵的每一行中选择一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9655750/

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