【问题标题】:How to save the for loop output as data.frame in R?如何将for循环输出保存为R中的data.frame?
【发布时间】:2017-07-14 03:45:50
【问题描述】:

我想知道如何将for loop 的输出保存为data.frame? 假设使用mtcars 数据集,我有以下for loop 脚本:

for (i in seq_len(nrow(mtcars))) { 
  if (i  <= 30) {

    next
  }

  print(mtcars[i,])  
}

              mpg cyl disp  hp drat   wt qsec vs am gear carb
Maserati Bora  15   8  301 335 3.54 3.57 14.6  0  1    5    8
            mpg cyl disp  hp drat   wt qsec vs am gear carb
Volvo 142E 21.4   4  121 109 4.11 2.78 18.6  1  1    4    2

但如果我要在output 文件中以dataframe 的形式访问save,我将得到以下信息:

   output <- as.data.frame(c())
    for (i in seq_len(nrow(mtcars))) { 
      if (i  <= 30) {

        next
      }

      output<- c(output,mtcars[i,])  
    }


   ### then the output is 

   > output
    $mpg
    [1] 15

    $cyl
    [1] 8

    $disp
    [1] 301

    $hp
    [1] 335

    $drat
    [1] 3.54

    $wt
    [1] 3.57

    $qsec
    [1] 14.6

    $vs
    [1] 0

    $am
    [1] 1

    $gear
    [1] 5

    $carb
    [1] 8

    $mpg
    [1] 21.4

    $cyl
    [1] 4

    $disp
    [1] 121

    $hp
    [1] 109

    $drat
    [1] 4.11

    $wt
    [1] 2.78

    $qsec
    [1] 18.6

    $vs
    [1] 1

    $am
    [1] 1

    $gear
    [1] 4

    $carb
    [1] 2

我知道简单的索引output &lt;- mtcars[-(1:30), ],但这不是我现实生活情况(更复杂)的解决方案。我真的需要循环来做我想做的事。

【问题讨论】:

  • 通过使用 c(),您可以连接 data.frames 列表。通过使用 cbind() 而不是 c() 你会得到你想要的
  • @Moody_Mudskipper ,请您为我编写代码以明确您的意思以及需要在哪里执行? tnx
  • @jogo,tnx 的评论,但它没有帮助!我知道这一点,关键是如何循环执行,这只是一个例子,伙计! :)
  • 输出
  • 它返回一个错误(我没有测试过),但是使用 rbind() 而不是 cbind() 并且它可以工作

标签: r for-loop dataframe save


【解决方案1】:

这是与您的代码最相似的解决方案。
这些点正在使用初始化(索引...[NULL, ])和函数rbind()

output <- mtcars[NULL,]
for (i in seq_len(nrow(mtcars))) { 
  if (i  <= 30) {
        next
  }
  # ...
  output <- rbind(output, mtcars[i, ]) 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 2019-10-24
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2020-10-08
    • 1970-01-01
    相关资源
    最近更新 更多