我们的R脚本在多台计算机上被多个用户使用,因此每台计算机上安装的软件包可能会有偏差。为了确保每个脚本适用于所有用户,我想定义一个函数pkgLoad,该函数将首先测试本地是否安装了软件包,然后使用抑制启动消息的库进行加载。参考检查安装软件包是否存在后再运行install.packages(),我尝试了以下方法
当我尝试使用pkgLoad("ggplot2")加载ggplot2时,终端显示以下错误信息:
错误:paste("package", package, sep = ":") : 对象 'ggplot2' 未找到 > pkgLoad("ggplot2") 正在加载所需的程序包:ggplot2 错误:library(x) : 没有叫做‘x’的程序包 > pkgLoad("ggplot2") 错误:library(x) : 没有叫做‘x’的程序包
为什么x从ggplot2变成普通的x?
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)
}
当我尝试使用pkgLoad("ggplot2")加载ggplot2时,终端显示以下错误信息:
错误:paste("package", package, sep = ":") : 对象 'ggplot2' 未找到 > pkgLoad("ggplot2") 正在加载所需的程序包:ggplot2 错误:library(x) : 没有叫做‘x’的程序包 > pkgLoad("ggplot2") 错误:library(x) : 没有叫做‘x’的程序包
为什么x从ggplot2变成普通的x?
library
的调用是多余的——如果包已经存在的话,在那个时候该包应该已经被加载了。 - Lars Kotthoff