遍历行并保持列值小于随机值 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)
我有一个类似于下面的矩阵,其中包含随机值的累积和。
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)