给定一个包含两个文件的包。在第一个文件中,我声明了一个变量(可能的值),在第二个文件中,我声明了一个函数,该函数使用该变量作为其参数的可能值。
# file1.R
pdfs <- c("norm", "t")
第二个文件:
# file2.R
f <- function(pdf = pdfs) {
pdf <- match.arg(pdf)
print(pdf)
}
函数看到pdf对象(我尝试打印它,它工作得很好),但是match.arg()没有按预期工作,并抛出以下错误:
Error in eval(expr, envir, enclos) :
object 'pdfs' not found
与此同时,下面的例子可以工作,所以我猜这很可能是环境的问题。
a <- c("a", "b")
f <- function(x = a) {
x <- match.arg(x)
print(x)
}
f()
会话信息:> sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
Running under: OS X 10.7.5 (Lion)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] s4chart_0.1.1
loaded via a namespace (and not attached):
[1] colorspace_1.2-6 scales_0.3.0 plyr_1.8.3 tools_3.2.1
[5] withr_1.0.2 gtable_0.1.2 Rcpp_0.12.1 memoise_1.0.0
[9] ggplot2_2.1.0 grid_3.2.1 digest_0.6.8 munsell_0.4.2
[13] devtools_1.12.0
可能是排序问题。在"DESCRIPTION
"文件的"Collate
"字段中,将"file1.R
"置于"file2.R
"之上。如果您使用的是氧,则可以在file2.R
中使用#' @include file1.R
。