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

问题描述 投票:0回答:1

我一直在尝试编写一个函数来替换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)
    }
}
r function install.packages
1个回答
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)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.