相关疑难解决方法(0)

优雅的方法来检查丢失的包并安装它们?

这些天我似乎与共同作者分享了很多代码.他们中的许多人都是初级/中级R用户,并没有意识到他们必须安装他们尚未拥有的软件包.

是否有一种优雅的方式来调用installed.packages(),将其与我正在加载的那些进行比较并在安装时如果丢失?

packages r r-faq

307
推荐指数
17
解决办法
12万
查看次数

一次加载多个包

如何在不重复重复输入require命令的情况下一次加载一堆包?我尝试了三种方法,所有这些方法都会崩溃并烧毁.

基本上,我想为一个将加载它们的函数提供包名称的向量.

x<-c("plyr", "psych", "tm")

require(x)
lapply(x, require)
do.call("require", x)
Run Code Online (Sandbox Code Playgroud)

packages r

160
推荐指数
7
解决办法
7万
查看次数

如何判断你在R中使用了哪些包

我有一个非常长的R脚本,包含许多if语句和异常情况.正如我一直在进行的那样,如果我已经去过导入和测试库,并且没有真正记录它们.问题是,如果我从一个干净的安装运行它,我不确定脚本将运行哪些语句,因此需要哪些库.

我的问题是:是否有任何R函数来测试脚本中正在使用哪些库?

编辑:我没有使用所有已安装的库,因此print(sessionInfo())没有用, 但我只是想用install.packages函数启动脚本

dependencies packages r

19
推荐指数
4
解决办法
7538
查看次数

检查是否安装了R包然后加载库

我们的R脚本用于多台计算机上的多个用户,因此每台计算机上都安装了软件包.为了确保每个脚本都适用于所有用户,我想定义一个函数pkgLoad,它将首先测试是否在本地安装软件包,然后再使用抑制的启动消息加载库.在运行install.packages()作为指南之前使用Check for installed packages,我试过了

 pkgLoad <- function(x)
  {
    if (!require(x,character.only = TRUE))
    {
      install.packages(x,dep=TRUE, repos='http://star-www.st-andrews.ac.uk/cran/')
      if(!require(x,character.only = TRUE)) stop("Package not found")
    }
    #now load library and suppress warnings
    suppressPackageStartupMessages(library(x))
    library(x)
  }
Run Code Online (Sandbox Code Playgroud)

当我尝试使用pkgLoad("ggplot2")加载ggplot2时,我在终端中收到以下错误消息

Error in paste("package", package, sep = ":") : 
  object 'ggplot2' not found
> pkgLoad("ggplot2")
Loading required package: ggplot2
Error in library(x) : there is no package called ‘x’
> pkgLoad("ggplot2")
Error in library(x) : there is no package called ‘x’
Run Code Online (Sandbox Code Playgroud)

为什么x从ggplot2变为普通的旧x?

r

15
推荐指数
3
解决办法
2万
查看次数

检查包是否已安装但未加载

建议包开发人员检查用户是否安装了包的典型方法如下:

if (!requireNamespace("package")) {
  stop("Please install package.")
}
Run Code Online (Sandbox Code Playgroud)

requireNamespace加载包(在当前范围内?)并返回 TRUE/FALSE 值。我需要在不加载命名空间的情况下检查包的安装状态。

这样做的原因是因为我正在编写一个knit_printS3 方法(扩展knitr包),并且我正在检查的命名空间在我的方法上下文之外有我想要避免的kableExtra副作用。knit_print

加载后,kableExtra会更改后续调用knitr::kable在全局级别的格式化方式。这样做有充分的理由,但我想在我的 S3 方法内部使用kableExtra,并且不要让最终用户对调用kable我的方法后行为不同的原因感到困惑。knit_print

这就是为什么我想在不加载命名空间的情况下检查命名空间(如果kableExtra未安装,只需调用knitr::normal_print)。

编辑:为了澄清为什么我不认为这是这个问题的重复,这些答案没有特别注意解决方案在安装时是否加载包。事实证明,有些解决方案没有加载有问题的包,但它们没有明显区分。

r r-package

6
推荐指数
1
解决办法
1177
查看次数

rpy2:检查软件包是否已安装

使用rpy2,我想检查是否安装了给定的包.如果是,我导入它.如果没有,我先安装它.

如何检查是否已安装?

from rpy2 import *
if not *my package is installed*:
   rpy2.interactive as r
   r.importr("utils")
   package_name = "my_package"
   r.packages.utils.install_packages(package_name)
myPackage = importr("my_package")
Run Code Online (Sandbox Code Playgroud)

python install r package rpy2

2
推荐指数
1
解决办法
1972
查看次数

标签 统计

r ×6

packages ×3

dependencies ×1

install ×1

package ×1

python ×1

r-faq ×1

r-package ×1

rpy2 ×1