【发布时间】:2016-11-06 14:22:51
【问题描述】:
我有一个类似于以下的矩阵,其中包含随机值的累积总和。
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 行的正确值,但我似乎不知道如何使用 apply 函数来做到这一点。也许我必须 for 循环它,但我的真实数据集有接近 100,000 行,所以我想尽可能避免 for 循环
Y<-data.frame(mat)
Y[1, which(Y[1,1:150]< RV)]
我以为这会很容易,但完全被难住了。任何想法将不胜感激
【问题讨论】:
-
如果不进行编辑,您的示例将无法重现,并且不清楚您希望输出的样子。可以修改一下吗?
-
@ulfelder 抱歉现在应该更好了。希望这能让问题更清楚。