【发布时间】:2016-01-20 11:18:36
【问题描述】:
我提前道歉,这可能是一个重复的问题。但是,我只是在stackoverflow上花了最后两个小时,似乎找不到解决方案。
我想使用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
请帮帮我。
【问题讨论】:
-
试试
^[[:digit:]]- 它必须在字符类中 -
我使用了一个 Perl 相关问题作为源副本,但它也与 POSIX 字符类有关,因此在这里也应该相关。
-
@Wiktor Stribiżew 我将
"^[:digit:]"切换为"^[[:digit:]]",但没有任何改变。 -
你能提供
dput(df_mod[217,]$nom)吗? -
@DavidArenburg ,它有效!!!!你真是个天才:
grepl("^[[:digit:]]", trimws(df_mod[217,]$nom)) [1] TRUE。非常感谢。您能否将您的评论切换为答案,以便其他用户可以从中获利。