gpt4 book ai didi

r - sink() 不会在 rmarkdown 中将输出打印到文本文件

转载 作者:行者123 更新时间:2023-12-04 09:33:36 24 4
gpt4 key购买 nike

假设我有一个名为 test.Rmd 的简单 rmarkdown 文档

---
output: pdf_document
---

This code tries to save output to a file called 'example.txt'
```{r}
sink(file='example.txt')
sink.number()
library(MASS)
summary(cars)
sink()
sink.number()
```

如果我在 RStudio 中运行它(使用 knit PDF 按钮),那么我会得到很多输出,但我相信最重要的是以下内容(我可以根据要求包含其他输出)
processing file: test.Rmd

"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS test.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output test.pdf --template "C:\Users\wammonj\Documents\R\win-library\3.2\rmarkdown\rmd\latex\default.tex" --highlight-style tango --latex-engine pdflatex --variable graphics=yes --variable "geometry:margin=1in"
output file: test.knit.md


Output created: test.pdf
Warning message:
In sink() : no sink to remove

文件 example.txt 已制作但输出不在那里,而 Rmarkdown 制作了一个名为 test.pdf 的文件,其中包含 summary(cars) 的输出。

这是问题吗? Rmarkdown 是否使用 sink() 来制作它的文档?有没有办法解决这个问题,因此输出将同时出现在 pdf 文件和文本文件中?

补充:从@r2evans 的评论看来,rmarkdown 确实使用了 sink()。我玩过 sink() 一点,似乎您可以同时进行多个转移,但您只能写入最近激活的转移(参见下面的示例)。

因此,从输出看来,Rmarkdown 立即关闭了我的接收器,因为当我查看 sink.number() 时,它始终为 1。

我仍在尝试为此找到解决方法,因此任何帮助都会很好。

多次改道的例子:
sink(file = 'example1.txt')
sink(file = 'example2.txt')
sink.number() # prints 2 to example2.txt
x = seq(1,10)
x # prints to example2.txt
sink()
sink.number() # prints 1 to example1.txt
y = sum(x)
y # prints to example1.txt
sink()
sink.number() # prints 0 to R console

最佳答案

我遇到了类似的问题。将输出保存到本地文件的一种解决方案是改用 write.csv() 函数,该函数也适用于非 csv 文件。

下面的 R 代码尝试将输出保存到名为“example.txt”的文件中。
write.csv(data.frame(data_to_save), file='example.txt')

关于r - sink() 不会在 rmarkdown 中将输出打印到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39131017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com