如何在R中更改“Set CRAN Mirror”或“chooseCRANmirror()”的默认选项?

时间:2013-08-20 22:50:34

标签: r cran

对于企业环境,我希望我们的R用户只使用我们的本地存储库。我已根据其他帖子的建议对Rprofile.site,.Rprofile和存储库文件进行了相应的必要更改,并且只能将存储库选项更改为本地选项。但是,用户仍然可以通过从菜单中选择“设置CRAN镜像”或运行“chooseCRANmirror()”命令来选择CRAN镜像,当她执行上述任一操作时,它将再次添加标准CRAN存储库作为存储库选项。我该怎么做才能让用户看不到/获取CRAN镜像的默认选项,结果无法改变本地存储库?

编辑:正如@Dason所说,我不想阻止专家用户更改存储库选项或其他。我想禁用选择镜像只是为了确保用户无法错误地访问远程存储库(并从那里下载包)。

1 个答案:

答案 0 :(得分:0)

在utils / R / packages.R源代码中,selectCRANmirros()调用函数getCRANmirrors(all = FALSE,local.only = FALSE),它执行以下操作:

getCRANmirrors <- function(all = FALSE, local.only = FALSE)
{
    m <- NULL
    if(!local.only) {
        ## try to handle explicitly failure to connect to CRAN.
        con <- url("http://cran.r-project.org/CRAN_mirrors.csv")
        m <- try(open(con, "r"), silent = TRUE)
        if(!inherits(m, "try-error")) m <- try(read.csv(con, as.is = TRUE))
        close(con)
    }
    if(is.null(m) || inherits(m, "try-error"))
        m <- read.csv(file.path(R.home("doc"), "CRAN_mirrors.csv"),
                      as.is = TRUE)
    if(!all) m <- m[as.logical(m$OK), ]
    m
}

因此,如果local.only为FALSE,则它具有CRAN URL的硬编码值。因此,我想我们必须将local.only设置为TRUE,然后更改本地CRAN_mirrors.csv文件。