【发布时间】: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 <- mtcars[-(1:30), ],但这不是我现实生活情况(更复杂)的解决方案。我真的需要循环来做我想做的事。
【问题讨论】:
-
通过使用 c(),您可以连接 data.frames 列表。通过使用 cbind() 而不是 c() 你会得到你想要的
-
@Moody_Mudskipper ,请您为我编写代码以明确您的意思以及需要在哪里执行? tnx
-
@jogo,tnx 的评论,但它没有帮助!我知道这一点,关键是如何循环执行,这只是一个例子,伙计! :)
-
输出
-
它返回一个错误(我没有测试过),但是使用 rbind() 而不是 cbind() 并且它可以工作