使用 foreach 进行并行化的函数使用同一包中的另一个函数曾经很好。但显然,Windows 上的 R-devel 不再适用了?
我开始发现这个问题出在我的一些包上,所以我决定制作一个可重现的小示例。
您可以找到一个小包来重现该问题及其功能:https://github.com/privefl/minipkg/blob/master/R/test-parallel.R .
您可以在此处看到失败的检查:https://github.com/privefl/minipkg/commit/973b2048d43a2c75fcee088f8182776f9cd1f95d/checks?check_suite_id=343796248#step:9:151 .
知道它来自哪里吗?是预期的吗?需要改变什么才能让它再次工作?
编辑: 我添加了更多构建(请参阅 https://github.com/privefl/minipkg/runs/339575258 );
- 在使用 R-devel 的 Mac 上它不会失败(Linux 由于另一个原因会失败)
- 在装有 R-3.6 的 Windows 上也会失败(但在装有 R-3.6.1 的 Windows 笔记本电脑上本地失败)
- 但在 win-builder 上运行良好 ( https://win-builder.r-project.org/xoPf41nz47Dx/00check.log )
- 在 Travis ( https://travis-ci.org/privefl/minipkg/builds/623573771 ) 和 AppVeyor ( https://ci.appveyor.com/project/privefl/minipkg/builds/29461832 ) 上运行良好
最佳答案
出现此错误的原因是 foreach 代码需要在子进程中加载包,但在运行 GitHub Actions 上的检查之前尚未安装该包。
如果您尝试在 Windows 计算机上本地运行 R CMD check
而无需先将软件包安装到库中,您会看到相同的结果。
我相信它无需安装即可在非 Windows 系统上运行,因为在 R CMD 检查期间 R CMD 检查
处理控制包库的环境变量的方式在 Windows 上与其他地方略有不同。
关于r - 使用 foreach 时无法从同一包中找到函数(Windows 开发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59197177/