2016-10-12 8 views
1

Есть ли способ игнорировать случай или включить чувствительность к корпусу при установке пакетов.Установка без учета регистра (при игнорировании) при установке пакетов

Пример: RWeka упаковка. Можно ли установить его как install.packages("rweka") или каким-то образом установить ignore.case = TRUE, но такого аргумента нет install.packages()

+1

Теоретически могут быть две упаковки RWeka и rweka (хотя CRAN этого не допустил). Однако вам это не нужно. – Roland

ответ

3

Имена пакетов чувствительны к регистру. Поэтому вы можете не получить уникальный матч, если проигнорировать это дело. Сказав, что лучший способ добиться того, что вы хотите:

#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 определяет начало и конец строки, в противном случае вы могли бы в конечном итоге с еще большим количеством пакетов, которые содержат то, что вы хотите, как подстроку.

1

Вы можете увеличить 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 (сейчас около 10K), но я подозреваю, что они все равно не позволят сопоставлять имена.