【问题标题】:Access function from current package when using R CMD check with vignette使用带有小插图的 R CMD 检查时从当前包访问功能
【发布时间】:2013-03-17 03:59:49
【问题描述】:

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

在尝试添加小插图之前,我能够毫无困难地运行 R CMD check packagename。 该软件包在packagenameR 目录中有一个函数foo.R(它使用基本图形制作绘图)。 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)

问题:

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

或者我应该通过将以下内容添加到DESCRIPTION 文件来采取简单的方法:

BuildVignettes: False

(因为我能够从现有的.Rnw 文件构建.pdf)。

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

【问题讨论】:

    标签: r sweave


    【解决方案1】:

    您的小插图顶部需要有library("mypkg"),以便可以找到您自己的函数,例如foo。我相信这是因为小插图建筑在干净的环境中运行,所以它不知道您的包裹或任何其他相关信息,除非您提起它。

    如果您已经有这样的一行,请在您的问题中添加一个小插图的示例,并包括您的sessionInfo(),因为我们可能需要它来解决它。

    【讨论】:

    • 好的,这有效:我仍然收到另一个错误,但它似乎无关。
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 2015-07-15
    • 2020-12-16
    • 2013-03-24
    • 2016-02-22
    • 1970-01-01
    • 2021-06-02
    • 2020-07-21
    相关资源
    最近更新 更多