如何将打印(i/j)保存到输出文件?

use*_*455 6 r

我做了简单的循环并得到了打印结果,但不知道如何输出它.

这是我编码的:

>for (i in 0:45) for (j in 0:45) print(i/j)
[1] Inf
[1] 1
[1] 0.5
[1] 0.3333333
[1] 0.25
[1] 0.2
[1] 0.1666667
[1] 0.1428571
[1] 0.125
[1] 0.1111111
[1] 0.1
Run Code Online (Sandbox Code Playgroud)

从这里,我怎样才能保存这个结果?我应该将打印(i/j)打印到对象中还是有其他方法将其保存到文件中?谢谢,

Rei*_*son 15

几个选项,取决于您想要的输出.

1)capture.output()将循环的输出抓取到文件中:

capture.output(for (i in 0:45) for (j in 0:45) print(i/j),
               file = "foo.txt")
Run Code Online (Sandbox Code Playgroud)

2)如果你想要数字,然后i/j通过save()或作为文本文件(例如csv)保存为R对象write.csv(),不要打印它.

out <- c() ## NEVER write a loop like this! Always allocate storage & fill in
for(i in 0:45)
    for(j in 0:45)
        out <- c(out, i/j)
head(out)
save(out, "foo.rda")
write.csv(out, "foo.csv")
Run Code Online (Sandbox Code Playgroud)

但是,您需要了解R中的矢量化操作.在这种情况下,通过两个循环在R中进行的操作可以更有效地进行:

out2 <- outer(0:45, 0:45, "/")
Run Code Online (Sandbox Code Playgroud)


42-*_*42- 4

这实际上取决于您想做什么。如果您只想将输出捕获到文本文件中,则可以查看capture.outputcat或 之一。sink如果您要创建 R 对象以供以后在会话中使用,请创建具有所需结构的对象:向量、列表、矩阵或 data.frame。然后使用该save函数保存对象。对象的文本表示可以使用dput或创建dump