我有一个 for 循环,每次运行都会给我一列数据。我在 0:4 范围内运行 for 循环,所以它给了我 5 列。如果我打印出来,就像 column1, column2, ... 我想将所有 5 列一起保存为 csv 文件。在这一个文件中,我想让 5 列按 for 循环的顺序排序,即 column1、column2、...
问问题
14103 次
2 回答
8
有很多方法可以实现您所描述的。这是一种适用于许多情况的方法。
# start with an empty list
mydata <- list()
# run through your loop, adding each vector to the list
for(i in 1:10){
# whatever is in your loop
mydata[[i]] <- # result of this iteration of loop
}
# turn your list into a dataframe
mydf <- data.frame(mydata)
# write dataframe to a file
write.csv(mydf, file="destfile.csv")
于 2015-06-19T21:28:54.090 回答
7
假设你有一个这样的 for 循环:
for (i in 0:4) {
this.column <- rep(i, 5)
}
要从生成的列中构建矩阵,您可以将其更改为:
sapply(0:4, function(i) rep(i, 5))
# [,1] [,2] [,3] [,4] [,5]
# [1,] 0 1 2 3 4
# [2,] 0 1 2 3 4
# [3,] 0 1 2 3 4
# [4,] 0 1 2 3 4
# [5,] 0 1 2 3 4
基本上,您只需在 for 循环内部创建一个函数,该函数将循环变量(i
在本例中)作为输入并返回该列。然后你sapply
用循环索引和第一个参数和函数作为第二个参数调用。
完全矢量化的方法可以结合matrix
和rep
:
matrix(rep(0:4, each=5), nrow=5)
# [,1] [,2] [,3] [,4] [,5]
# [1,] 0 1 2 3 4
# [2,] 0 1 2 3 4
# [3,] 0 1 2 3 4
# [4,] 0 1 2 3 4
# [5,] 0 1 2 3 4
于 2015-06-19T21:18:07.480 回答