【问题标题】:Loading R package inside R script在 R 脚本中加载 R 包
【发布时间】:2020-08-20 05:27:50
【问题描述】:

我尝试了几种方法来加载我的script.R 中的几个特定包,以便通过键入./Rscript script.R 在终端中运行脚本。脚本没有问题,但是当我想加载一个包时出现错误,例如tidyverse

Error: package or namespace load failed for ‘tidyverse’ in rbind(info, getNamespaceInfo(env, "S3methods")):
number of columns of matrices must match (see arg 2)
In addition: Warning message:
package ‘tidyverse’ was built under R version 3.6.0

基于此链接 Installing a package in R inside a script 我试图通过在 Rstudio 中键入 .libPaths() 来查找库的位置,然后我通过键入在 script.R 中提供了加载包的路径 library(tidyverse,lib.loc="/Library/Frameworks/R.framework/Versions/3.6/Resources/library")

我再次遇到同样的错误。 您能否提及错误发生在哪里?谢谢

【问题讨论】:

  • 这可能会有所帮助 - researchgate.net/post/… - 在其他选项中,他们建议将您自己的代码制作成一个包,以便它自己调用依赖项。
  • 另外,您是否对任何其他软件包也有同样的问题,还是只有tidyverse 一个?
  • 您可能还会看到require() 是否有相同的结果。你可以在这里找到一个使用 require 并检查它是否成功的脚本 - yihui.org/en/2014/07/library-vs-require: if (require('foo')) { awesome_foo_function() } else { warning('You missed an awesome function') }
  • @PabloHerrerosCantis 我用readr 尝试过,但仍然遇到同样的错误

标签: r bash tidyverse r-package rscript


【解决方案1】:

注意it is not recommended 使用require() 来加载包。如果使用library() 失败,那么require() 就没有理由工作。

根据您的问题,您似乎在当前文件夹 (./Rscript) 中使用了某个 Rscript 二进制文件,这可能与 RStudio 使用的 R 版本不同。

你可以试试跑步

Rscript -e "library(tidyverse)"

看看你是否可以加载tidyverse。请注意,我在这里使用Rscript 命令而不是./Rscript。这应该指向您安装的最新 R 版本并且 RStudio 正在使用相同的版本。

如果错误仍然存​​在,您可以尝试使用 tidyverse 重新安装

Rscript -e "install.packages('tidyverse')"

【讨论】:

    【解决方案2】:

    解决办法是通过require()加载包

    require(dplyr)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 2018-04-23
      • 2020-05-25
      • 2016-02-06
      相关资源
      最近更新 更多