考虑以下两行:
Sys.setenv(R_IMPORT_PATH = "/path/to/my/r_import")
foo <- modules::import("foo")
如果我从已经建立的交互式R会话中执行此代码,它可以正常工作。
但是,如果我在.Rprofile
中添加相同的两行并开始新的交互式R会话,则modules::import
行会失败
Error in module_init_files(module, module_path) :
could not find function "setNames"
如果我然后尝试以下修复/黑客
Sys.setenv(R_IMPORT_PATH = "/path/to/my/r_import")
library(stats)
foo <- modules::import("foo")
...然后modules::import
行仍然失败,但使用以下
Error in lapply(x, f) : could not find function "lsf.str"
因此修补缺失名称的想法似乎是一场难以维持的噩梦......
关键问题是:交互式搜索会话启动后的搜索路径似乎与.Rprofile
脚本看到的搜索路径不同。
Q1:我是否有办法告诉R将搜索路径完全按照交互式会话中出现第一个>
提示时的方式进行操作?
Q2:或者,{<1}}是否可以安排某些代码在会话的默认搜索路径所在之后运行放置?
NB:以下解决方案:
.Rprofile
...每次修改(第三方)Sys.setenv(R_IMPORT_PATH = "/path/to/my/r_import")
library(stats)
library(utils)
foo <- modules::import("foo")
包时都可能会中断。