我有一个具有以下结构的文档。
\documentclass[11pt]{article}
\begin{document}
\title{Something}
\author{Andreas}
\date{May 8th, 2013} \maketitle
\section{Introduction}
\paragraph{...}
<<>>=
2+2
@
<<>>=
require('tm')
@
\begin{itemize}
\item{asdf}
\end{itemize}
some text here.
\section{Intro}
More text.
\section{Other Stuff}
<<>>=
pdf <- readPDF(PdftotextOptions = '-layout')
@
<<eval=FALSE>>=
text <- pdf(elem = list(uri = file.name),
language = 'en',
id = 'id1')
@
\end{document}
当我在 R 中运行以下命令时,出现以下错误:
knit('test.rnw')
processing file: test.rnw
|....... | 11%
ordinary text without R code
|.............. | 22%
label: unnamed-chunk-1
Quitting from lines 12-13 (test.rnw)
Error in pdf_doc(file, cache = FALSE) :
'file' must be a character string or a file/raw connection
我不明白这个错误,并且似乎无法一致地重现该问题。我从一个空白文档开始,添加了一些运行良好的 R 代码。然后,我到达了它停止正确编译的地步。然后似乎我可以删除最近添加的代码块,但我仍然遇到相同的错误。
session 信息:
R version 3.0.0 (2013-04-03)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] tm_0.5-8.3 knitr_1.2
loaded via a namespace (and not attached):
[1] digest_0.6.3 evaluate_0.4.3 formatR_0.7 slam_0.1-28 stringr_0.6.2
[6] tools_3.0.0
有什么建议吗?如果需要更多信息,请告诉我。谢谢。
最佳答案
您的问题并不完全可以复制,但它确实可能表明发生了什么。你有一个变量 file.name
被传递到 pdf()
命令,但knitr找不到它。当我尝试运行你的代码时,我也不能这样做,因为它从未在knitr文档中定义过。
当你编译knitr文件时,R会从一个全新的空环境开始。如果您之前设置过file.name
之前在您的工作区中,knitr 不会自动加载它。在使用之前,您需要将其设置为一个 block :
<<>>=
require('tm')
file.name <- #something#
@
如果您正在加载文件,您可能需要使用绝对路径或 setwd()
让它发挥作用。
更新:
您并没有尝试实际评估 text
,所以未定义 file.name
不是问题。我认为主要问题是您正在重命名内置 pdf()
功能。使用 pdf <- readPDF(PdftotextOptions = '-layout')
时出现错误,但当我使用不同的变量名称时,它会一致地编译,例如 pdf.asdf <- readPDF(PdftotextOptions = '-layout')
.
关于r - LaTeX 和knitr - 插入 R 代码时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16423664/