Извлечение строк из символьного вектора в R из / в указанные c слова - PullRequest
1 голос
/ 19 марта 2020

Вот пример вектора символов, который у меня есть, мне нужно извлечь все строки между "## Code:" и "## My table". Я понимаю, что могу сделать это по позиции, используя text[4:8], однако длина извлекаемого кода будет варьироваться, поэтому мне нужно решение, которое не зависит от фиксированной позиции.

text <- c("## Author: user", "## Data = data.txt", "## Code:", "temp(){", "x = a1 + b1", "a1(b1 = 3)", "tf(cov = c(,1,))", "}", "## My table")

Новый вектор символов должен содержать следующее: c("temp(){", "x = a1 + b1", "a1(b1 = 3)", "tf(cov = c(,1,))", "}")

Спасибо за помощь в поиске решения.

1 Ответ

1 голос
/ 19 марта 2020

Мы можем создать логический индекс с помощью ==, а затем обернуть с помощью which

text[which(cumsum(text == "## Code:"|text ==  "## My table") == 1)[-1]]
#[1] "temp(){"          "x = a1 + b1"      "a1(b1 = 3)"       "tf(cov = c(,1,))" "}"  

или с помощью which найти начальное и конечное местоположения и использовать : для получения последовательности позиций для извлечения элементов

text[(which(text == "## Code:")[1] +1):(which(text ==  "## My table")-1)]
...