Установка пакетов без учета регистра (игнорировать регистр) при установке пакетов
Есть ли способ игнорировать регистр или включить регистронезависимость при установке пакетов.
Пример, RWeka
пакет. Можно ли установить его как install.packages("rweka")
или как-то настраивая ignore.case = TRUE
но такого аргумента нет install.packages()
2 ответа
Имена пакетов чувствительны к регистру. Поэтому вы можете не получить уникальное совпадение, если проигнорируете дело. Сказав это, лучший способ достичь того, что вы хотите, это:
#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
определяет начало и конец строки, в противном случае вы можете получить еще больше пакетов, которые содержат то, что вы хотите в качестве подстроки.
Вы можете увеличить 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
как отметил Роланд в своем комментарии.
CRAN может ослабить свои собственные внутренние политики по мере роста объема пакетов R (сейчас он приближается к 10К), но я подозреваю, что они по-прежнему не разрешают сопоставлять имена.