我问这个问题是因为我最近解决了安装 R Shiny 的问题(见下文)。但是,我找到的答案并没有详细说明为什么会出现这个问题,我真的很想了解以提高我对 R 的知识以及为什么会发生这些事情。
所以我在 RStudio 中安装 Shiny 的尝试失败了,我相信这些是重要的错误消息:
Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) :
namespace 'httpuv' 1.3.3 is being loaded, but >= 1.4.3 is required
ERROR: lazy loading failed for package 'shiny'
* removing 'C:/Program Files/R/R-3.2.2/library/shiny'
* restoring previous 'C:/Program Files/R/R-3.2.2/library/shiny'
Warning in install.packages :
running command '"C:/PROGRA~1/R/R-32~1.2/bin/x64/R" CMD INSTALL -l "C:\Program Files\R\R-3.2.2\library" C:\Users\Sam\AppData\Local\Temp\RtmpuI3XHe/downloaded_packages/shiny_1.1.0.tar.gz' had status 1
Warning in install.packages :
installation of package ‘shiny’ had non-zero exit status
我首先经历了通常的过程以找到解决方案。
我尝试的其他解决方案包括:
install.packages("shiny", dependencies=TRUE)
。 这些解决方案都没有奏效,我相信这与依赖 httpuv 有关,但我不确定为什么。
所以最后我能够使用的代码是:
install.packages('shiny', type = "binary")
,这让我可以开始使用 Shiny。虽然我不难找到解决这个问题的方法,但我真的很感激有人能抽出时间来解释为什么我的 Windows 中的 RStudio 版本(版本 1.1.456)不支持Shiny 的源包以及安装二进制包的原因。我讨厌解决问题,但对它的理解为零。
R 版本 3.2.2
谢谢你。
最佳答案
二进制与源代码选项和问题
您正在体验新旧代码与 R 环境依赖项之间的推拉摩擦。这里的现实是你必须在稳定和进步之间做出选择。两者兼得是很困难的。
考虑:
这么想吧。
Shiny
取决于 httpuv
这取决于 Rcpp
Devtools
如果您以二进制形式下载,则在 R 版本 3.2.5 下编译。 更改、假设和相互依赖导致复杂的反向移植编译情况。因此,二进制包快照的优势。
选项:
在这种情况下,您通常有两种选择。您可以:
解决方案选项:
如何做到以上几点?在第一种情况下,您可以使用 devtools::install_git并提取特定分支或包版本的源代码并编译它。在第二个中,您可以升级您的环境,然后拉取并升级您的软件包。
如果要使用特定的 R 环境版本,则必须使用二进制版本。为什么?这些将匹配 R 环境版本编码环境假设。
这是一个突出当前代码和旧代码之间推拉的经典问题。你必须在稳定和进步之间做出选择。两者兼得是很困难的。
我希望以上内容有助于解释这种情况。
关于R Studio 1.1.456 (Windows) : Why do I sometimes have to install binary packages instead of installing from the source?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51704594/