考虑以下两行:
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:或者,有没有办法.Rprofile
安排一些代码在会话的默认搜索路径到位后运行?
注意:解决方案如下:
Sys.setenv(R_IMPORT_PATH = "/path/to/my/r_import")
library(stats)
library(utils)
foo <- modules::import("foo")
...每次修改(第三方)modules
软件包时都有可能中断。