我希望我不会遗漏一些明显的东西,但这是我的问题:
给出这样的数据
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)
如果你不舒服,包中regex有一个函数utils,它可以将基于通配符的表达式转换为正则表达式.所以你可以做到
df[grepl(glob2rx('Andy*'), rownames(df)),]
Run Code Online (Sandbox Code Playgroud)