某些R包不会使用update.packages()进行更新

时间:2013-12-14 19:42:33

标签: r

选择Packages->Update packages...给出:

> update.packages(ask='graphics',checkBuilt=TRUE)
--- Please select a CRAN mirror for use in this session ---
Warning: package 'foreign' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'lattice' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'Matrix' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'mgcv' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'nlme' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'rpart' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated

我在“管理员”的启动菜单中运行了R快捷方式并得到了相同的结果。

R版本是3.0.2。

5 个答案:

答案 0 :(得分:15)

问题的一般重述

  1. 在Windows 7/8中,基本安装中包含的程序包nicePack已过时。
  2. 您可以使用update.packages()或通过等效的GUI菜单进行更新。
  3. 你得到:
    Warning: package 'nicePack' in library 'C:/Program Files/R/R-3.*.*/library" will not be updated
  4. 潜在原因

    R不是非常与Windows,所以它只是说“将不会更新”,而不是“拒绝C:/ Program Files / R / ...”的权限。无论如何你意识到R无法写入C:/Program Files并因此以管理员身份重新启动并升级,但问题仍然存在!

    如果您检查R能够写入的个人包目录,您会看到nicePack的更新版本在那里。在Windows中,目录通常为~\R\win-library\x.y或使用Sys.getenv("R_LIBS_USER")查找。

    可能第一次R无法写入R默认目录时,使用了个人目录,因此有两个版本的nicePack。第二次,尽管有管理员权限,R在个人目录中找到更新的包版本,但它不更新默认目录。

    可能是R表示“警告”而不是“错误”,因为 软件包已安装在个人目录中,但过时的版本仍保留在默认库中。

    解决方案

    删除个人库目录中的nicePack软件包目录,以管理员身份重新启动并再次更新。

    评论

    我不知道这种行为是否存在实际错误,无论如何,更多信息性消息肯定会帮助Windows用户。

    也许在Windows中应该避免使用默认库,而不是个人版。许多Windows应用程序使用C:\ProgramData~\AppData\Local,无需特殊权限即可写入。

答案 1 :(得分:3)

我在Ubuntu上,我从RStudio遇到同样的问题。我试图通过sudo Rupdate.packages()来解决。但它没有帮助。 但是sudo rstudio + update.packages()解决了这个问题。

答案 2 :(得分:1)

在 R 4.0.4 上 (镓操作系统 3.1)

权限? old.packages() ?

就我而言,我注意到 3 个不会更新的软件包的权限设置与 /usr/local/lib/R/library 中的其他软件包不同。

我修复了权限,但这并没有解决问题。

然后我运行 old.packages() 并注意到 SAME 3 个软件包被认为是 old

我承认我不太明白 ?update.packages() 中的帮助,但尝试了以下。

update.packages(oldPkgs = old.packages())

这解决了问题并更新了 3 个包。

答案 3 :(得分:0)

我在Windows上,但通过SSH隧道使用R Studio Server(AW​​S / Ubunutu Linux)。我认为有时候R Studio会增加一层难度,而不是让事情变得更容易,这种情况会发生在多个UNIX用户之间的包依赖性

所以,添加这种可能会影响寻找上述问题的人>>>

的情况

您可以在用户上拥有软件包版本

上的其他版本

您需要SUDO R和安装。{1}}(与Windows上的R.exe相同)安装.update()与root用户。

然后,当您访问RStudio Server时,您会看到系统库包已更新

总之,即使您在服务器上只使用一个高权限的unix用户,库也会有两个不同的位置:

ubuntu的(用户):/usr/local/lib/R/

系统范围:/usr/lib/R/library

答案 4 :(得分:0)

在我的情况下,在Ubuntu终端中执行以下命令序列:

sudo i-
R
update.packages(ask=FALSE)
q(save="no")
logout

这就是说:以root用户身份登录->启动R->从root用户更新程序包->从R中退出->从根用户退出。