使用带有晕影的R CMD检查时,从当前包中访问功能

时间:2013-03-17 03:59:49

标签: r sweave

我正在整理一个包裹;为简单起见,使用一个功能和一个说明其用途的插图。

在尝试添加小插图之前,我能够毫无困难地运行R CMD check packagename。 该包在foo.R目录R中有一个函数packagename(它使用基本图形绘制图表)。 vignettes目录中的插图(.Rnw文件)调用函数foo,如下所示:

<<fig1, fig=true, echo=true, include=true>>=
df0 <- data.frame(x1=rnorm(10))
foo(df0)
@

我想按规则玩'但是像往常一样运行R CMD check packagename会给出:

  When sourcing 'foo.R':
  Error: could not find function "foo"
  Execution halted

我尝试将以下内容添加到.Rnw文件中,但没有帮助:

\begin{document}
\VignetteDepends{packagename}

我也试过这个没有成功:

<<fig1, fig=true, echo=true, include=true>>=
df0 <- data.frame(x1=rnorm(10))
source("foo.R")
foo(df0)
@

请注意,NAMESPACE文件已包含以下内容:

export(foo)

问题:

每次从包中调用函数时,是否需要在source()文件中添加特定的.Rnw命令?如果是这样,我如何指定路径(即从检查小插图时开始的R CMD check处?)

或者我应该通过在DESCRIPTION文件中添加以下内容来轻松解决问题:

BuildVignettes: False

(因为我可以从现有的.pdf文件中构建.Rnw

我正在尝试遵循Writing R extensions中的建议。

1 个答案:

答案 0 :(得分:1)

您的插图需要在顶部library("mypkg"),以便找到您自己的功能,例如foo。我相信这是因为小插图建筑在一个干净的环境中运行,所以除非你提起它,否则它不知道你的包裹或其他任何其他物品。

如果您已经拥有这样的一行,请在您的问题中添加一个简短的小插图示例,并在我们可能需要的地方加入您sessionInfo()来解决问题。