sink()不会在rmarkdown

时间:2016-08-24 18:53:26

标签: r rstudio r-markdown

假设我有一个名为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中运行它(使用编织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()时,它总是一个。

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

多次转移的例子:

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

1 个答案:

答案 0 :(得分:1)

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

<强> --- 输出:pdf_document ---

此代码尝试将输出保存到名为“example.txt”

的文件中

<强> {R}

write.csv(data.frame(data_to_save), file='example.txt')