遍历行并保持列值小于随机值 R

Loop through rows and keep column values less than random value R

我有一个类似于下面的矩阵,其中包含随机值的累积和。

dist<-.25
mat<-matrix(data=runif(150,25,55)*dist, nrow = 500,ncol=150)
mat = t(apply(mat, 1, cumsum))

我想做的是:

为每一行生成一个新的随机值

RV<-runif(1,1,800)

并且对于该行中小于 "RV" 的所有列,使它们 = "na"。我还想为每一行

保留(cbind)随机值 "RV"

最后我想要一个矩阵(或数据框),其中第一列是为每一行生成的随机值 "RV",并且该行中的所有列的值都小于 "RV" 或否则 "na"

我知道如何一次识别 1 行的正确值,但我似乎无法弄清楚如何使用应用函数来执行此操作。也许我必须对其进行 for 循环,但我的真实数据集接近 100,000 行,因此我想尽可能避免 for 循环

Y<-data.frame(mat)
Y[1, which(Y[1,1:150]< RV)]

我以为这很容易,但完全被难住了。任何想法将不胜感激

这是一个使用应用的解决方案:

mat2 <- apply(mat,
              MARGIN = 1,
              function(x) {
                 zx <- runif(1,1,800)
                 x[x > zx] <- NA
                 return(append(zx, x))
              })

mat2 <- t(mat2)