0

我提前道歉,这可能是一个重复的问题。但是,我刚刚花了最后两个小时在 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

请帮我。

4

1 回答 1

1

显然,您的某些值具有前导空格,因此您可以将正则表达式修改为(或类似的)

grepl("^\\s*[[:digit:]]", df_mod$name)

或者使用内置trimws函数

grepl("^[[:digit:]]", trimws(df_mod$name))
于 2016-01-20T14:43:37.100 回答