通配符匹配R中的字符串

Wildcard to match string in R

这听起来可能很傻,但让我抓狂。 我有一个包含字母数字值的矩阵,我正在努力测试该矩阵的某些元素是否仅匹配首字母和末尾字母。因为我不关心中间字符,所以我尝试(没有成功)使用通配符。

例如,考虑这个矩阵:

m <- matrix(nrow=3,ncol=3)
m[1,]=c("NCF","NBB","FGF")
m[2,]=c("MCF","N2B","CCD")
m[3,]=c("A3B","N4F","MCP")

我想评估 m[2,2] 是否以“N”开头并以“B”结尾,而不考虑字符串中的第 2 个字母。我尝试过

grep("N.B",m)

它有效,但我仍然想知道是否有更紧凑的方法,例如:

m[2,2]="N.B"

这显然不起作用!

谢谢

您可以将 grepl 与子集 m 一起使用,例如:

grepl("^N.B$", m[2,2])
#[1] TRUE

或使用startsWithendsWith:

startsWith(m[2,2], "N") & endsWith(m[2,2], "B")
#[1] TRUE