我在R/globalconstants.R中定义了全局变量
R/globalconstants.R
cat R/globalconstants.R GC1 <- 1
cat R/globalconstants.R
GC1 <- 1
在其他R函数中如:R/myfun.R中引用全局常量GC1
R/myfun.R
GC1
cat R/myfun.R myfun <- function(gc1 = GC1) { return(gc1) }
cat R/myfun.R
myfun <- function(gc1 = GC1) { return(gc1) }
但在R包检查时报错:
Error in GC1 : object 'GC1' not found
请教如何在R包中定义常量
mingsu tctcab 非也,把对象存为数据太浪费了。真正需要的是在 DESCRIPTION 文件的 Collate 字段中定义代码文件的顺序,就像这样。如果你用 roxygen 的话,可用 @include 自动实现,就像这样。也就是,如果一个代码文件中需要用到其它代码文件中的对象,那么前者必须在后者之后加载(即:前者必须 @include 后者)。
DESCRIPTION
Collate
@include
但凭我的经验,你这个问题有点奇怪,因为默认代码文件顺序是按文件名排序的,g 开头的应该会在 m 开头的文件之前运行。除非你这是随意编造的文件名。所以提问的时候,最好还是给个完整的可重复的例子,这样省得别人猜。
https://r-pkgs.org/data.html
tctcab
感谢! 😄
yihui 谢谢! 学习了。