繁体   English   中英

对于每一列,计数行数直到满足条件

[英]For each column, count number of rows until condition is met

我想创建一个向量,其值是从对行数进行计数(针对每一列)开始,从最后一行开始,然后对“向上”进行计数,直到达到one为止。 例如,

1 1 1
1 1 0
1 0 0

将导致以下答案0 1 2 在第一列中到达1之前有0行,在第2列到达1之前有1行,依此类推。

我想将上述解决方案实现为以下代码( #TimeSince ):

Lattice <- rep(NA_integer_, 6) # 
Results <- rep(0, 6) # 
TimeSince <- rep(0,6) # 
Prob <- c(0.92, 0.90, 0.85, 0.80, 0.35, 0.15)

resultList <- list()

for (j in 1:100) {
  for (i in 1:6){
    if (runif(1,min=0, max=1) < Prob[i]){
      Lattice[i] <- 1}
    else{Lattice[i:6] <- 0}
    if (Lattice[i] == 0) break()}

  resultList[[j]] <- Lattice
  Results <- Lattice + Results
  #TimeSince[[j]] <-  count rows until '1' in Results per column

  }

以下代码产生了我在上面寻找的结果:

#Edited code based on Ben Bolker comment
for (j in 1:100) {
  for (i in 1:6){
    if (runif(1,min=0, max=1) < Prob[i]){
      Lattice[i] <- 1}
    else{Lattice[i:6] <- 0}
    if (Lattice[i] == 0) break()}

  resultList[[j]] <- Lattice
  dm <- do.call("rbind",resultList) # added in edit
  TimeSince <- (apply(dm,2,function(x) which(rev(x)==1)[1])) - 1 # added in edit

  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM