gpt4 book ai didi

R - 根据另一个矩阵索引更改矩阵值

转载 作者:行者123 更新时间:2023-12-05 08:30:29 27 4
gpt4 key购买 nike

我有两个矩阵:

m1 <- matrix(runif(750), nrow = 50, byrow=T)
m2 <- matrix(rep(TRUE,750), nrow = 50, byrow=T)

对于每个 m1 行,我需要找到两个最低值的索引。然后,我需要使用剩余的索引(即不是最低的两个值)在 m2 中分配 FALSE

一行很容易做到:

ind <- order(m1[1,], decreasing=FALSE)[1:2]
m2[1,][-ind] <- FALSE

因此,我可以使用循环对所有行执行相同的操作:

for (i in 1:dim(m1)[1]){

ind <- order(m1[i,], decreasing=FALSE)[1:2]
m2[i,][-ind] <- FALSE

}

但是,在我的数据集中,这个循环的运行速度比我希望的要慢(因为我的矩阵非常大 - 500000x150000)。

有没有更快的 R 方法可以在不使用循环的情况下获得相同的结果?

最佳答案

你可以试试下面的代码

m2 <- t(apply(m1,1,function(x) x %in% head(sort(x),2)))

关于R - 根据另一个矩阵索引更改矩阵值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64157181/

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