将字符串从列表中拆分为元素

时间:2018-09-06 13:40:32

标签: r string

包中的一个函数给了我一个字符,原始的字符串被合并在一起。我需要将它们分开,换句话说,我必须找到原始元素。这是一个示例,也是我尝试过的:

orig<-c("answer1","answer2","answer3")
result<-"answer3answer2"

作为结果,我需要的是:

c("answer2","answer3")

我尝试过split()结果,但是没有字符串可以作为结果的基础,尤其是我以前不知道答案是什么。

我试图将结果匹配()到orig,但是我需要对所有子字符串进行匹配。

必须有一个简单的解决方案,但我还没有找到。

2 个答案:

答案 0 :(得分:0)

您所描述的似乎完全是字符串匹配,而对于您的字符串,grepl似乎就是这样,尤其是:

FindSubstrings <- function(orig, result){
  orig[sapply(orig, grepl, result)]
}

更多细节:grepl接受一个pattern参数,并查看它是否出现在您的字符串中(在我们的例子中为result),并返回一个TRUE / FALSE值。我们通过逻辑向量对原始值进行子集化-该值是否出现在字符串中?
可能的改进:

  • fixed=TRUE可能是个好主意,因为对于简单的字符串匹配,您不需要完整的正则表达式功能
  • 某些匹配模式可能包含其他匹配模式,例如"answer10"包含"answer1"
  • stringi对于此类任务可能更快(只是谣言四处散布,未经严格测试),因此,如果您经常这样做,则可能需要调查一下。

答案 1 :(得分:0)

{{1}}

这应适用于定义明确且可逆的输入。另外,是否可以将一些字符串附加到函数的输入中,以便以后可以方便地将其分开?