我想使用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
请帮帮我。
答案 0 :(得分:1)
显然,您的某些值具有前导空格,因此您可以将正则表达式修改为(或类似的)
grepl("^\\s*[[:digit:]]", df_mod$name)
或使用内置的trimws
功能
grepl("^[[:digit:]]", trimws(df_mod$name))