R是否有通配符表达式(例如星号(*))?

Vin*_*woo 11 r

我希望我不会遗漏一些明显的东西,但这是我的问题:

给出这样的数据

Data1=
Name       Number
AndyBullxxx    12
AlexPullxcx    14
AndyPamxvb     56
RickRalldfg    34
AndyPantert    45
SamSaltedf     45
Run Code Online (Sandbox Code Playgroud)

我想能够拉出所有以"Andy"开头的行

subset(Data1,Name=="Andy*")

AndyBullxxx  12
AndyPamxvb   56
AndyPantert  45
Run Code Online (Sandbox Code Playgroud)

所以基本上是一个外卡符号,它允许我将所有以特定字符标记开头的行子集.

Mat*_*ert 20

尝试,

df[grep("^Andy",rownames(df)),]
Run Code Online (Sandbox Code Playgroud)

第一个参数grep是模式,正则表达式.grep返回包含第一个参数中给出的模式的行.^表示开头.

让我们重现这个:

 df <- data.frame(x=c(12,14,56,34,45,45))
 rownames(df) <- c("AndyBullxxx", "AlexPullxcx","AndyPamxvb", "RickRalldfg","AndyPantert","SamSaltedf")
 ## see what grep does
 grep("^Andy",rownames(df))
Run Code Online (Sandbox Code Playgroud)


Ram*_*ath 9

如果你不舒服,包中regex有一个函数utils,它可以将基于通配符的表达式转换为正则表达式.所以你可以做到

df[grepl(glob2rx('Andy*'), rownames(df)),]
Run Code Online (Sandbox Code Playgroud)