【发布时间】:2019-01-10 22:36:13
【问题描述】:
我正在编写一个 R 包“my_package”,它在说明文件中有这些导入:
Imports: jsonlite,
tibble,
shiny,
ggplot2,
plotly (>= 4.5.6.9000),
dplyr
这是我的 .libPaths():
[1] "C:/Users/some_user/Documents/R/win-library/3.5" "C:/rhome/r-3.5.1/library"
问题来了:
当我安装“my_package”时,“plotly”包位于:
"C:/rhome/r-3.5.1/library"
如果“情节”包仍然存在,一切都会正常工作。但是如果我将“plotly”包移动到 .libPaths() 上的另一个路径:
"C:/Users/some_user/Documents/R/win-library/3.5"
然后尝试从“my_package”调用一个使用“plotly”函数的函数,那么这是错误消息:
ERROR: Couldn't normalize path in `addResourcePath`, with arguments: `prefix` = 'plotly-binding-4.8.0'; `directoryPath` = 'C:/rhome/r-3.5.1/library/plotly/htmlwidgets'
这是我的实验:
-
我尝试了相反的操作,并将“plotly”包最初位于“C:/Users/some_user/Documents/R/win-library/3.5”,然后安装“my_package”。就像在我将“plotly”包移动到“C:/rhome/r-3.5.1/library”之前一样。错误信息反转:
错误:无法规范化
addResourcePath中的路径,带有参数:prefix= 'plotly-binding-4.8.0';directoryPath= 'C:/Users/some_user/Documents/R/win-library/3.5/plotly/htmlwidgets' 我用另一个“my_package”导入的包尝试了同样的事情,它是“闪亮的”。这里没有问题。安装“my_package”时“闪亮”的位置无关紧要。只要“闪亮”位于 .libPath() 中的两条路径中的任何一条中,“my_package”就会按预期工作。
所以对于“plotly”来说,它的路径是在安装时绝对设置的。
【问题讨论】:
-
这里的实际问题是什么? “如何在不破坏东西的情况下手动移动包裹?”?
-
@Marius 好吧,我的经理认为这是一个错误。他认为只要“plotly”位于 .libPaths() 中的任何路径中,那么无论何时安装“my_package”,它都应该始终有效。
-
您是否尝试过将 plotly 安装到不同的 libPath (
install.packages(..., lib)) 而不是手动移动它? -
@RomanLuštrik 我试过你的建议,但没用,这是我的问题stackoverflow.com/questions/59752370/…