5

我有一个 for 循环,每次运行都会给我一列数据。我在 0:4 范围内运行 for 循环,所以它给了我 5 列。如果我打印出来,就像 column1, column2, ... 我想将所有 5 列一起保存为 csv 文件。在这一个文件中,我想让 5 列按 for 循环的顺序排序,即 column1、column2、...

4

2 回答 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用循环索引和第一个参数和函数作为第二个参数调用。

完全矢量化的方法可以结合matrixrep

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 回答