首页 > 解决方案 > 从 R 中的字符向量中从/到特定单词中提取字符串

问题描述

这是我拥有的字符向量的示例,我需要提取“## 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,))", "}")

感谢您帮助我找到解决方案。

标签: rregexstringr

解决方案


我们可以用 创建一个逻辑索引==,然后用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)]

推荐阅读