2016-01-20 2 views
0

Извиняюсь заранее, это может быть вопрос повторения. Тем не менее, я просто потратил два последних часа на stackoverflow и, похоже, не нашел решения.R: grepl выберите первый символ на строке

Я хочу использовать grepl для обнаружения строк, которые начинаются с цифры, это то, что я пытался использовать, но он не дал мне rigt ответ:

grep.numeric=as.data.frame(grepl("^[:digit:]",df_mod$name)) 

Я думаю, что проблема из регулярное выражение "^[:digit:]", но я не мог понять это.

UPDATE

Мой dataframe выглядит так, это огромный, но ниже пример:

ID  mark   name 
    1  whatever  name product 
    2  whatever  10 product 
    3  whatever  250 product 
    4  another_mark other product 

Я хочу, чтобы обнаружить продукты, которые их имена начинаются с числа.

UPDATE 2

применения grep.numeric=grepl("^[[:digit:]]",df_mod$name) на примере ниже дать мне правильный ответ, который:

grep.numeric 
    [1] FALSE TRUE TRUE FALSE 

Но, что сводишь меня с ума, когда я pply эту фикцию к моей реальной dataframe:

grep.numeric=grepl("^[[:digit:]]",df_mod[217,]$nom) 

дать мне этот результат:

grep.numeric 
    [1] FALSE 

Но на самом деле, то, что у меня есть это:

df_mod[217,]$nom 
    [1] 100 lipo 30 gélules 

Пожалуйста, помогите мне.

+1

Try '^ [[: digit:]] '- он должен быть внутри класса символов –

+0

Я использовал вопрос, связанный с Perl, как исходный дубликат, но он также связан с классом символов POSIX, поэтому он должен быть здесь и здесь. –

+0

@Wiktor Stribiżew Я переключил ''^[: digit:] "' by '"^[[: digit:]] ", но ничего не изменилось. – sarah

ответ

1

По-видимому, некоторые из значений имеют ведущие пробелы, так что вы можете либо изменить ваше регулярное выражение (или что-то подобное)

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

Или использовать встроенный в trimws функции

grepl("^[[:digit:]]", trimws(df_mod$name)) 
+0

Да, начальные пробелы в значениях вызвали проблему. 'grepl ("^[[: digit:]] ", trimws (df_mod $ name))' работал как шарм, спасибо. – sarah

+0

Вы также попробовали 'grepl ("^\\ s * [[: digit:]] ", df_mod $ name)'? Мне это нравится. –

+0

Да, он работает также !! У меня есть два решения для моей проблемы сейчас :) – sarah

Смежные вопросы