使用单个功能安装和加载包

时间:2014-06-18 20:25:00

标签: r function install.packages

我一直在尝试编写一个函数来替换R的库和install.packages函数,如果安装了函数则加载函数,如果不安装则加载。它适用于第一种情况,但是当我尝试使用它安装一个函数,即使在安装后它给出了“没有包名为...”的错误。软件包安装正确,但我无法在同一功能的单次运行中安装和加载。我添加了睡眠命令,希望它能修复它,但事实并非如此。谁知道为什么?

insist = function(name){
    #enables entering package name without quotes
    name = substitute(name) 
    name = as.character(name)

    if (!require(name, character.only = T)) {
        install.packages(name)
        Sys.sleep(2)
        library(name, character.only = T)
    }
}

1 个答案:

答案 0 :(得分:1)

该消息实际上来自require()而非install.packages()library()。我打赌它仍然被添加到你的搜索路径中的包(至少对我而言)。因此,我认为你必须更积极地抑制这种警告。试试这个。

insist = function(name){
    #enables entering package name without quotes
    name = substitute(name) 
    name = as.character(name)

    if (suppressWarnings(!require(name, character.only = T, quietly=T))) {
        install.packages(name)
        library(name, character.only = T)
    }
}