R: grepl select 字符串的第一个字符
R: grepl select first charachter on a string
我提前道歉,这可能是一个重复的问题。但是,我刚刚花了最后两个小时在 Whosebug 上,似乎找不到解决方案。
我想使用 grepl
来检测以数字开头的行,这就是我尝试使用的但没有给我正确的答案:
grep.numeric=as.data.frame(grepl("^[:digit:]",df_mod$name))
我猜想问题出在正则表达式"^[:digit:]"
,但我想不通。
更新
我的数据框看起来像这样,它很大,但下面是一个例子:
ID mark name
1 whatever name product
2 whatever 10 product
3 whatever 250 product
4 another_mark other product
我想检测名称以数字开头的产品。
更新 2
在下面的例子中应用 grep.numeric=grepl("^[[:digit:]]",df_mod$name)
给我正确的答案是:
grep.numeric
[1] FALSE TRUE TRUE FALSE
但是,当我将此功能应用于我的真实数据框时,让我发疯的是:
grep.numeric=grepl("^[[:digit:]]",df_mod[217,]$nom)
给我这个结果:
grep.numeric
[1] FALSE
但实际上,我拥有的是:
df_mod[217,]$nom
[1] 100 lipo 30 gélules
请帮助我。
显然,您的某些值有前导空格,因此您可以将正则表达式修改为(或类似的东西)
grepl("^\s*[[:digit:]]", df_mod$name)
或者使用内置的trimws
函数
grepl("^[[:digit:]]", trimws(df_mod$name))
我提前道歉,这可能是一个重复的问题。但是,我刚刚花了最后两个小时在 Whosebug 上,似乎找不到解决方案。
我想使用 grepl
来检测以数字开头的行,这就是我尝试使用的但没有给我正确的答案:
grep.numeric=as.data.frame(grepl("^[:digit:]",df_mod$name))
我猜想问题出在正则表达式"^[:digit:]"
,但我想不通。
更新
我的数据框看起来像这样,它很大,但下面是一个例子:
ID mark name
1 whatever name product
2 whatever 10 product
3 whatever 250 product
4 another_mark other product
我想检测名称以数字开头的产品。
更新 2
在下面的例子中应用 grep.numeric=grepl("^[[:digit:]]",df_mod$name)
给我正确的答案是:
grep.numeric
[1] FALSE TRUE TRUE FALSE
但是,当我将此功能应用于我的真实数据框时,让我发疯的是:
grep.numeric=grepl("^[[:digit:]]",df_mod[217,]$nom)
给我这个结果:
grep.numeric
[1] FALSE
但实际上,我拥有的是:
df_mod[217,]$nom
[1] 100 lipo 30 gélules
请帮助我。
显然,您的某些值有前导空格,因此您可以将正则表达式修改为(或类似的东西)
grepl("^\s*[[:digit:]]", df_mod$name)
或者使用内置的trimws
函数
grepl("^[[:digit:]]", trimws(df_mod$name))