2015-06-16 3 views
1

У меня есть вектор, myvector <- c("a","b","c","cat","4","dog","cat","f"). Я хотел бы выделить те элементы, которые сразу же следуют за элементами, содержащими строку «cat».Выбор конкретных элементов в векторе в R

I.e., я хочу myvector2, содержащий только «4» и «f». Я не знаю, с чего начать.

+2

также , рекомендуется избегать использования таких ключевых слов, как «список», как имя переменной. – nico

ответ

6
myvector <- c("a","b","c","cat","4","dog","cat","f") 

where_is_cat <- which(myvector == "cat") 
# [1] 4 7 

myvector[where_is_cat + 1] 
# [1] "4" "f" 

myvector2 <- myvector[where_is_cat + 1] 
1

Вы можете Подмножество список минус первый элемент (list[-1]) по индексам, где список минус его последний элемент (list[-length(list)]) равно "кошка"

list[-1][list[-length(list)]=="cat"] 
# [1] "4" "f" 
+2

Это может быть хорошим решением, но на самом деле это требует некоторого объяснения, поскольку оно наклоняется к * непонятной стороне *, особенно для тех, кто не знаком с синтаксисом R – nico

2

Попробуйте это:

x[grep('cat',x)+1] 
#[1] "4" "f" 
+1

В оригинальном вопросе говорится «элементы, содержащие строку« cat »- поэтому 'grep' может быть уместным, если нет общего соответствия. Если вы не используете какое-либо реальное регулярное выражение, лучше использовать 'grep ('cat', x, fixed = TRUE), хотя – thelatemail

Смежные вопросы