【问题标题】:How to store results of a for loop in a vector or a list in R如何将for循环的结果存储在R中的向量或列表中
【发布时间】:2020-05-30 03:36:57
【问题描述】:

我想运行一个简单的 for 循环并将值存储在列表或向量中。例如:

ex = c(10,11,17)



for (i in (0:length(ex))){
  if ex[i] < 12 {
    # store the value in a vector
  }
}

当我不知道向量的长度并因此无法先定义它时,我该怎么做?

【问题讨论】:

    标签: r for-loop vector


    【解决方案1】:

    另一个基本 R 选项是使用 na.omit + ifelse

    na.omit(ifelse(ex<12,ex,NA))
    

    【讨论】:

      【解决方案2】:

      你可以在没有for循环的情况下做到这一点:

      ex[ex < 12]
      #[1] 10 11
      

      或者使用Filter:

      Filter(function(x) x < 12, ex)
      

      但是,如果您想使用 for 循环执行此操作,您可以尝试:

      count <- 1
      result_vec <- numeric()
      
      for (i in ex) {
         if (i < 12) {
          result_vec[count] <- i
          count <- count + 1
        }
      }
      

      【讨论】:

      • 这是有道理的。谢谢。
      【解决方案3】:

      您可以分配一个最大可能大小的向量并仅部分填充它,然后将其缩小。

      ex = c(10,11,17,9,14,1,20,1)
      store <- list(length(ex))
      for (i in (1:length(ex))){
        if(ex[i] < 12){
          store[[i]] <- ex[i]
        }
      }
      unlist(store)
      
      [1] 10 11  9  1  1
      

      【讨论】:

        猜你喜欢
        • 2020-07-24
        • 2021-01-03
        • 2018-07-27
        • 2015-08-24
        • 2014-12-07
        • 1970-01-01
        • 1970-01-01
        • 2020-01-04
        • 1970-01-01
        相关资源
        最近更新 更多