R: подмножество символьного вектора

Я хочу получить подмножество из символьного вектора. Однако я хочу получить vector2, содержащий элементы из исходного вектора между конкретными элементами.

vector <- c("a", "", "b", "c","","d", "e")
vector

Как перехватить все элементы между элементами «b» и «e» и получить vector2?

#Expected result:
vector2
"c","","d"
3
задан Mikołaj 18 February 2019 в 19:45
поделиться

3 ответа

С отрицательными индексами:

x[-c(1:which(x == 'b'), which(x =='e'):length(x))]
#[1] "c" ""  "d"

В случае, если e найдено до b, возвращается пустой вектор:

(y <- rev(x))
#[1] "e" "d" ""  "c" "b" ""  "a"
y[-c(1:which(y == 'b'), which(y =='e'):length(y))]
#character(0)
0
ответ дан utubun 18 February 2019 в 19:45
поделиться

Вы также можете попробовать:

vector[cumsum(vector %in% c("b", "e")) == 1][-1]

[1] "c" ""  "d"
0
ответ дан tmfmnk 18 February 2019 в 19:45
поделиться

Вы также можете сделать что-то вроде этого:

vector <- c("a", "", "b", "c","","d", "e")
vector[seq(which(vector=="b")+1,which(vector=="e")-1)]
#[1] "c" ""  "d"
0
ответ дан Anders Ellern Bilgrau 18 February 2019 в 19:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: