我有一个包含字符串的数据框。我想找到是否在每个元素中找到了部分字符串。作为输出,我想要一个数据帧(最终是相同的),其中我找不到部分字符串的每个元素的NA,以及找到它时的实际部分字符串(仅!)。
此外,我有多个部分字符串......而且我知道其中2个部分字符串永远不会出现在同一个元素中!
我最接近的是:
for(i in 1:length(partial_strings)){
z <- apply(y,2,function(k)str_replace(k,partial_strings[i], partial_strings[i]))
}
z <- ifelse(z %in% partial_strings,z,NA)
但遗憾的是,str_replace不是仅返回部分字符串,而是返回原始元素。我可以理解为什么,但我已经尝试了其他的东西,只能使输出从我想要的方式进一步。
提前致谢
答案 0 :(得分:0)
str_extract
包中的 stringr
是可行的方法。如果需要,它使用正则表达式,这有助于您提取多个部分字符串。
在括号内创建由"|"
分隔的每个部分字符串的字符串。例如,要从名为"abc"
的字符向量中提取"def"
或text
:
str_extract(text, "(abc|def)")
如果返回与text
长度相同的字符串向量,其中包含"abc"
和"def"
匹配的任何位置。如果一个字符串匹配两个部分字符串,则仅返回第一个字符串(例如str_extract("abcghdbdef", "(abc|def)")
仅返回"abc"
),尽管您在上面建议不会发生这种情况。如果没有匹配部分,则返回NA
。