在R中匹配字符串的一部分

4
我卡在了一些通常在其他编程语言中很容易的东西。
我想要测试在 R 中一个字符串是否包含在另一个字符串中。例如,我尝试了以下代码:
match("Diagnosi Prenatale,Esercizio Fisico", "Diagnosi Prenatale")
pmatch("Diagnosi Prenatale,Esercizio Fisico", "Diagnosi Prenatale")
grep("Diagnosi Prenatale,Esercizio Fisico", "Diagnosi Prenatale")

没有一个起作用。要让它工作,我应该先使用strsplit拆分第一个字符串并提取第一个元素。
注意:我想在一个字符串向量上执行此操作,以接收一个是/否向量,因此在我编写的函数中应该传入一个向量而不是单个字符串。但是,如果单个字符串都无法工作,那么想象一下它们的完整向量... 有什么想法吗?

2
一些快速的注释:(1)您不会使用matchpmatch来完成此任务 - 这些是用于在列表中匹配的。 (2)您正在错误地使用grep - 模式是第一个参数,文本是第二个。 - rrs
1个回答

4

试试使用 grepl

grepl("Diagnosi Prenatale","Diagnosi Prenatale,Esercizio Fisico" )
[1] TRUE

您也可以使用字符向量来实现这一点,例如:
x <- c("Diagnosi Prenatale,Esercizio Fisico", "Diagnosi Prenatale")
grepl("Diagnosi Prenatale",x)
#[1] TRUE TRUE

好的回答。我想指出的是,原帖中使用了错误的 grep 用法,这就是为什么他的代码没有起作用的原因。通常情况下,模式是第一个参数,这一点经常会让我感到困惑。 - rrs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接