【问题标题】:Case insensitive package installation (ignore case) while installing packages安装包时不区分大小写的包安装(忽略大小写)
【发布时间】:2017-02-21 02:54:20
【问题描述】:

有没有办法在安装包的时候忽略大小写或者开启不区分大小写。

例如,RWeka 包。是否可以像install.packages("rweka") 一样安装它或以某种方式设置ignore.case = TRUE,但没有像install.packages() 这样的论点

【问题讨论】:

  • 理论上可能有两个包 RWeka 和 rweka(尽管 CRAN 不允许这样做)。但是,您不应该需要它。

标签: r package case-insensitive install.packages ignore-case


【解决方案1】:

包名区分大小写。因此,如果您忽略大小写,您可能无法获得唯一匹配。话虽如此,实现您想要的最佳方法是:

#get list of packages
packages <- available.packages()[,"Package"]
#find matches by ignoring case
my_packs <- packages[grep("^rweka$",packages,ignore.case=TRUE)]
#install - beware of multiple matches
install.packages(my_packs)

注意grep 中的正则表达式指定了字符串的开始和结束,否则你可能会得到更多包含你想要的子字符串的包。

【讨论】:

    【解决方案2】:

    您可以通过以下方式扩充 R:

    install_p <- function(x) {
      av <- available.packages()
      av <- setNames(av[,"Package"], tolower(av[,"Package"]))
      install.packages(av[x])
    }
    

    在您的~/.Rprofile 中,这样做是安全的:

    install_p("rweka")
    

    因为:

    sum(duplicated(tolower(unname(av[,"Package"]))))
    

    0,正如 Roland 在他的评论中指出的那样。

    CRAN 可能随着 R 包数量的增长(现在接近 10K)放宽自己的内部政策,但我怀疑他们仍然不允许匹配名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 2013-04-15
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多