РЕДАКТИРОВАТЬ
Не совсем уверен, что вы хотите. Вот два решения:
ДАННЫЕ :
df <- data.frame(
First_Name = c("Prabhat", "Ray", "ben", "Tony", "Prabhat@gmail.com", "aaa261", "aa?w", "123asd", "Bruce", "Aston", "Passi@yahoo.com"))
df
First_Name
1 Prabhat
2 Ray
3 ben
4 Tony
5 Prabhat@gmail.com
6 aaa261
7 aa?w
8 123asd
9 Bruce
10 Aston
11 Passi@yahoo.com
Преобразование в символ:
df[] <- lapply(df[], as.character)
Первое решение :
В этом решении вы создаете новый столбец с именами и NA
s, заменяющими неназванные имена. Замена достигается предложением ifelse
, grepl
и шаблоном [^A-z]
, которое соответствует любым строкам, которые не состоят только из букв:
df$new <- ifelse(grepl("[^A-z]", df$First_Name), "NA", df$First_Name)
RESULT :
df
First_Name new
1 Prabhat Prabhat
2 Ray Ray
3 ben ben
4 Tony Tony
5 Prabhat@gmail.com NA
6 aaa261 NA
7 aa?w NA
8 123asd NA
9 Bruce Bruce
10 Aston Aston
11 Passi@yahoo.com NA
Второе РЕШЕНИЕ :
Если вы просто заинтересованы в «получении», как вы говорите, имен, которые предполагают, что вы, возможно, захотите их собрать в векторе, то это можно сделать так:
grep("[^A-z]", as.character(unlist(df$First_Name)), value = T, invert = T)
РЕЗУЛЬТАТ :
[1] "Prabhat" "Ray" "ben" "Tony" "Bruce" "Aston"
Надеюсь, что один из этих советов будет вам полезен.