R的输出太大

时间:2016-12-14 13:01:54

标签: r for-loop

我正在RStudio中编写一个for循环程序。

当我使用以下命令时,

a <- 10
for (i in c(1:10335) { 
    a <- a + 0.005
    print(a)
}

我在控制台中获得了非常大的输出,因为循环运行了10335次。这个大输出也是总输出的一小部分(一些,可能是1000左右,最后的值)。我也在控制台中松开了我的书面程序。我该如何解决这个问题?如何在输出中获得一组完整的10335值?

此外,有没有办法以excel或文本格式导出此输出?

2 个答案:

答案 0 :(得分:3)

我们可以使用seq()避免for循环:

# using seq instead of forloop
res <- seq(from = 10 + 0.005, to = 10 + 10335 * 0.005, by = 0.005)
# and write to a file
write.table(res, "temp_seq.txt", col.names = FALSE, row.names = FALSE)

或者如果我们必须使用循环,那么使用sink()函数:

# using loop and sink the output to a file
sink("temp_loop.txt")
a <- 10
for (i in c(1:10335)) { 
  a <- a + 0.005
  print(a)
}
sink()

在这两种情况下,我们都将输出写入文件,因为RStudio控制台对打印有限制。

答案 1 :(得分:2)

您可以将它们添加到现有矢量中,而不是打印值:

a <- 10
results <- vector(length = 10335)
for (i in c(1:10335)) {
a <- a + 0.005
results[i] <- a
}

str(results)
num [1:10335] 10 10 10 10 10 ...

您可以使用write.table:

将结果保存到文本文件中
write.table(results, file = "results.txt", row.names = FALSE, col.names = FALSE)