R - match.arg()看不到在另一个文件(包开发)中声明的对象



给定一个包含两个文件的包。在第一个文件中,我声明了一个变量(可能的值),在第二个文件中,我声明了一个函数,该函数使用该变量作为其参数的可能值。

# 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

相关内容

  • 没有找到相关文章

最新更新