如何cbind在R中的循环中生成的列
how to cbind the column generated in a loop in R
我有一个 for 循环,它为每个 运行 提供一列数据。我 运行 范围 0:4 中的 for 循环,所以它给了我 5 列。如果我打印出来,就像 column1、column2... 我想将所有 5 列一起保存为一个 csv 文件。在这个单个文件中,我希望按 for 循环的顺序对 5 列进行排序,即 column1、column2、...
假设您有一个这样的 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
)作为输入并 returns 列。然后使用循环索引和第一个参数调用 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
有很多方法可以实现您所描述的内容。这是一种适用于许多情况的方法。
# 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")
我有一个 for 循环,它为每个 运行 提供一列数据。我 运行 范围 0:4 中的 for 循环,所以它给了我 5 列。如果我打印出来,就像 column1、column2... 我想将所有 5 列一起保存为一个 csv 文件。在这个单个文件中,我希望按 for 循环的顺序对 5 列进行排序,即 column1、column2、...
假设您有一个这样的 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
)作为输入并 returns 列。然后使用循环索引和第一个参数调用 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
有很多方法可以实现您所描述的内容。这是一种适用于许多情况的方法。
# 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")