gpt4 book ai didi

r - 如何获取存储在向量中的索引处的所有元素?

转载 作者:行者123 更新时间:2023-12-04 10:11:10 25 4
gpt4 key购买 nike

我有一个矩阵,其中每一行都由零和一个单独的行组成,比如说 y <- rbind(c(1,0,0), c(0,1,0), c(0,1,0))我有一个向量,每行都有一个索引,比如 x <- c(1,2,3)和 。现在我想计算 y[i,x[i]] == 1 的次数持有。我知道我可以这样做

count <- 0
for(i in 1:3)
count <- count + y[i, x[i]]

但我很感兴趣是否有更聪明的方法。类似于 count <- sum(y[,x]) .当然这行不通,因为y[,x]给出一个矩阵。

因此,我的问题是有一种方法可以通过使用 apply 或任何其他智能技巧,即不使用 for 来获得一个向量,该向量的元素位于另一个向量给定的位置。 -循环?

我一直在寻找这个,但我真的不知道如何调用它,因此我没有找到任何有用的东西。抱歉,如果这个问题已经存在于某个地方......

最佳答案

我们可以使用row/column索引来提取'x'和'y'索引对应的元素,然后得到sum

sum(y[cbind(1:nrow(y), x)])
#[1] 2

如果值不等于 1,

sum(y[cbind(1:nrow(y), x)]==1)

或者对于这种情况,

sum(diag(y)==1)
#[1] 2

或者

sum(y*diag(y))

编辑:将行/列索引从 cbind(x,1:ncol(y)) 更改为 cbind(1:nrow(y), x) 作为根据评论。

关于r - 如何获取存储在向量中的索引处的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35314068/

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