Как подмножество вектора, основанное на условии «содержит» символ?

#r #extract #wildcard #subset #contains

#r #извлечь #подстановочный знак #подмножество #содержит

Вопрос:

Если у меня есть вектор:

 Months = month.abb[1:12]
 

Я хочу извлечь все месяцы, которые начинаются с буквы J (в данном случае, январь, июнь и июль).

  1. Есть ли в Excel подстановочный знак, например *, в котором перечислены все элементы векторов, которые вы ищете для J *?
  2. Как мне извлечь элементы, начинающиеся либо на букву «М», либо на букву «А»? Ожидаемый результат будет в марте, мае, апреле, августе?

Ответ №1:

Попробуйте:

  grep("^J", Months,value=TRUE)
 #[1] "Jan" "Jun" "Jul"

grep("^A|^M", Months,value=TRUE)
#[1] "Mar" "Apr" "May" "Aug"
 

Комментарии:

1. Идеальный. Работал абсолютно безупречно. Приветствия, приятель!

Ответ №2:

Вы найдете glob2rx функцию полезной для преобразования конструкций с подстановочными знаками в регулярные выражения:

 > glob2rx("J*")
[1] "^J"
> grep(glob2rx("J*"), Months, value=TRUE)
[1] "Jan" "Jun" "Jul"
 

Комментарии:

1. Благодарим вас за то, что обратили наше внимание на glob2rx. Существуют ли другие инструменты в базе R, которые помогают людям правильно создавать регулярные выражения?

2. @user2583119 Других подобных функций, о которых я знаю, нет.

Ответ №3:

Если вы случайно stringr загрузили, вы могли бы сделать:

 library(stringr)

str_subset(Months, "^J")
[1] "Jan" "Jun" "Jul"