used - nested if else in r
FunciĆ³n Hashtag Extract en R ProgramaciĆ³n (3)
- Las expresiones regulares de Hashtag no son tan simples
- No estoy seguro de que comprenda las "reglas" comúnmente aceptadas para los hashtags
- No creo que
str_extract_all()
devuelva lo que crees que es - Solo use
stringi
stringr
funcionesstringr
están construidas encima de - La gente necesita dejar de analizar tweets
Esto debería manejar la mayoría de los casos, si no todos:
get_tags <- function(x) {
# via http://stackoverflow.com/a/5768660/1457051
twitter_hashtag_regex <- "(^|[^&//p{L}//p{M}//p{Nd}_/u200c/u200d/ua67e/u05be/u05f3/u05f4/u309b/u309c/u30a0/u30fb/u3003/u0f0b/u0f0c/u00b7])(#|/uFF03)(?!/uFE0F|/u20E3)([//p{L}//p{M}//p{Nd}_/u200c/u200d/ua67e/u05be/u05f3/u05f4/u309b/u309c/u30a0/u30fb/u3003/u0f0b/u0f0c/u00b7]*[//p{L}//p{M}][//p{L}//p{M}//p{Nd}_/u200c/u200d/ua67e/u05be/u05f3/u05f4/u309b/u309c/u30a0/u30fb/u3003/u0f0b/u0f0c/u00b7]*)"
stringi::stri_match_all_regex(x, hashtag_regex) %>%
purrr::map(~.[,4]) %>%
purrr::flatten_chr()
}
tests <- c("#teste_teste //underscore accepted",
"#teste-teste //Hyphen not accepted",
"#leof_gfg.sdfsd //dot not accepted",
"#f34234@45#6fgh6 // @ not accepted",
"#leo#leo2#asd //followed hastag without space ",
"#6663 // only number accepted",
"_#asd_ // hashtag can''t start or finish with underscore",
"-#sdfsdf- // hashtag can''t start or finish with hyphen",
".#sdfsdf. // hashtag can''t start or finish with dot",
"#leo_leo__leo__leo____leo // decline followed underline")
get_tags(tests)
## [1] "teste_teste" "teste"
## [3] "leof_gfg" "f34234"
## [5] "leo" NA
## [7] NA "sdfsdf"
## [9] "sdfsdf" "leo_leo__leo__leo____leo"
your_string <- "#letsdoit #Tonewbeginnign world is on a new#route"
get_tags(your_string)
## [1] "letsdoit" "Tonewbeginnign"
Tendrá que modificar la función si necesita que cada grupo de hashtags se agrupe con cada vector de entrada, pero realmente no proporcionó muchos detalles sobre lo que realmente está tratando de lograr.
Estoy tratando de crear una función de extracción de hashtag en R. Esta función extraerá un hashtags de una publicación, si hay alguna, otra dará un espacio en blanco. Mi función es como
hashtag_extract= function(text){
match = str_extract_all(text,"#//S+")
if (match) {
return match
}else{
return ''''}}
String="#letsdoit #Tonewbeginnign world is on a new#route
Pero mi función no funciona, mostrándome toneladas de errores. Como el primer error es
Error: unexpected symbol in:
" if (match) {
return match"
entonces quiero aplicarlo como
hashatag_extract(string)
y la respuesta debería venir como
#letsdoit ##Tonewbeginnign #route
Y eventualmente usaré sapply para aplicar esta función en toda la columna, por eso la parte If es importante. Por favor, ignore mi sangría para R, ya que no es importante para R, pero cada sugerencia será útil
@manu sharma, diría que no necesitas postularte si no está dentro. Permita que las filas que no coinciden tomen los valores como ''NA''. Y después de aplicar la función, la cambia a blanco. Espero que mi código te ayude:
aaa <- readLines("C://MY_FOLDER//NOI//file2sample.txt")
ttt <- function(x){
r <- sapply(x, function(x) { matches <- str_match(x,"#//w+//s+")})
r
}
y <-ttt(aaa)
y[is.na(y)]=''''
Gracias a todos por toda la ayuda, conseguí que funcionara de alguna manera, pensé que era casi similar a la respuesta de Shalini 1. reemplazar todas las NA en el mensaje
message[is.na(message)]=''abc''
2.función para extraer los Hashtags
hashtag_extrac= function(text){
match = str_extract_all(text,"#//S+")
if (match!= "") {
match
} else {
'''' }}
aplicando función en columna completa
hashtags= sapply(message, hashtag_extrac)