如何过滤字符串变量以查找以字母开头的值

ECI*_*CII 4 r stringr dplyr

我有一个混乱的字符变量,例如:

df<-c("_oun_", "0000ff", "03815", "?3jhdb", "test", "1,000", "1.000")
Run Code Online (Sandbox Code Playgroud)

我想过滤掉所有不是单词的值。我认为首先要过滤掉所有不以字符开头的值。

我怎样才能做到这一点tidyverse?对于上面提到的示例,所需的输出将为test

And*_*erg 5

一些选项带有stringr. 正则表达式查找^以字母[:alpha:](大写或小写)开头且后跟任意数量+的字母的任何内容。

这会直接打印值,无需手动对数据进行子集化:

str_subset(df, "^[:alpha:]+")
[1] "test"
Run Code Online (Sandbox Code Playgroud)

通过手动子集设置:

df[str_detect(df, "^[:alpha:]+")]
[1] "test"
Run Code Online (Sandbox Code Playgroud)

或者

df[str_which(df, "^[:alpha:]+")]
[1] "test"
Run Code Online (Sandbox Code Playgroud)

保持向量结构完整:

str_extract(df, "^[:alpha:]+")
[1] NA     NA     NA     NA     "test" NA     NA
Run Code Online (Sandbox Code Playgroud)

  • 关键点是“^”是字符串开头的标记。 (3认同)