将R循环输出保存到例如csv文件

时间:2018-04-10 02:41:00

标签: r loops

我知道这可能是微不足道的,但我无法解决。我已经编辑了原始问题,因为我意识到这不是很合乎逻辑。请参阅以下代码:

u1 <- rnorm(30)
usq <- 0
for(i in 1:5) 
{
usq[i] <- u1[i]*u1[i]
print(usq[i])
}

输出是(您的数字可能不同):

[1] 0.3501974
[1] 0.01937814
[1] 0.4053783
[1] 0.0005323552
[1] 1.459631

我想要做的就是将此输出保存为例如包含一列或两列的CSV文件。我很高兴被指出回答这个问题的任何地方。我不能为我的生活找到它......我试过了:

write.csv(matrix(1:5, ncol=1), "Results.csv")

2 个答案:

答案 0 :(得分:1)

我认为这些数字对于更复杂的东西是站着的 - 通常可以避免R中的循环 - 而且很少有地方没有更好的选择。

要回答你的问题,你需要(正如格雷戈尔指出的那样)write.csv。我要做的另一个补充是,第一次调用它时,需要创建一个新文件。

write.csv(output_as_dataframe_or_matrix, file = "path_to_file.csv")

之后,你需要告诉它不要覆盖之前的内容:

write.csv(output_as_dataframe_or_matrix, file = "path_to_file.csv", append = TRUE)

以下是如何实现这一点(注意我正在删除for循环.R将对向量的每个元素执行许多操作,并且当它以这种方式工作时效率更高。

u1 <- rnorm(30
usq <- u1^2 # or u1 * u1
print(usq)

write.csv(usq, "Results.csv")

答案 1 :(得分:0)

这可能不是最有说服力的问题(我为此道歉),但答案应该是必须首先创建“空容器”,然后填充循环计算中的数字。为了从上面解决我的问题,以下代码完成了这项工作:

output<-matrix(0,5,1)
output<-as.data.frame(output)
u1 <- rnorm(30)
usq <- 0
for(i in 1:5) 
{
usq[i] <- u1[i]*u1[i]
print(usq[i])
output$V1[i]<-usq[i]
}
write.csv(output, "Results.csv")