[R-br] String com um espaço que não é espaço

Benilton Carvalho beniltoncarvalho em gmail.com
Segunda Março 5 13:43:36 BRT 2012


curiosamente:

gsub("[[:blank:]]", "\\+", loucura)

funciona sem problemas pra mim...

> sessionInfo()
R Under development (unstable) (2012-01-11 r58090)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base

other attached packages:
[1] RColorBrewer_1.0-5   BiocInstaller_1.1.28

loaded via a namespace (and not attached):
[1] tools_2.15.0


2012/3/5 Benilton Carvalho <beniltoncarvalho em gmail.com>:
> Resultado do emacs:
>
>        character:   (160, #o240, #xa0)
> preferred charset: unicode (Unicode (ISO10646))
>       code point: 0xA0
>           syntax: .    which means: punctuation
>         category: .:Base, b:Arabic, j:Japanese, l:Latin
>      buffer code: #xC2 #xA0
>        file code: #xC2 #xA0 (encoded by coding system utf-8-unix)
>          display: by this font (glyph code)
>    nil:-apple-Courier-medium-normal-normal-*-18-*-*-*-m-0-iso10646-1 (#xA6)
>   hardcoded face: nobreak-space
>
> Character code properties: customize what to show
>  name: NO-BREAK SPACE
>  old-name: NON-BREAKING SPACE
>  general-category: Zs (Separator, Space)
>  decomposition: (noBreak 32) (noBreak ' ')
>
>
> dai', no meu teste:
>
> txt = paste("meu" , "texto", sep=loucura)
> gsub("\\xA0", "\\+", txt)
>
> com o resultado:
>
> [1] "meu+texto"
>
>
> b
>
> 2012/3/5 Lucas Barbosa <lucasbcr em gmail.com>:
>>> gsub("[[:blank:]]+", "\\+", cidade)
>> [1] "Águas Lindas+de+Goiás"
>>
>>> save(loucura, file='caracter_loucura.RData')
>>
>> Já estou quase desistindo. Pra quem tiver curiosidade segue anexo o arquivo
>> caracter_loucura.RData
>>
>> Em 5 de março de 2012 12:35, Benilton Carvalho <beniltoncarvalho em gmail.com>
>> escreveu:
>>
>>> Hmmm...
>>>
>>> Eu ainda tentaria algo como:
>>>
>>> gsub("[[:blank:]]+", "\\+", cidade)
>>>
>>> e, falhando tudo, abriria o arquivo de origem dos dados no meu bom e
>>> velho Emacs e usaria describe-char para tentar entender a fonte do
>>> probelma.
>>>
>>> b
>>>
>>> 2012/3/5 Lucas Barbosa <lucasbcr em gmail.com>:
>>> >> Encoding(cidade)
>>> > [1] "unknown"
>>> >> cidade <- enc2native(cidade)
>>> >>
>>> >> cidade
>>> >
>>> > [1] "Águas Lindas de Goiás"
>>> >>
>>> >> Encoding(cidade)
>>> > [1] "unknown"
>>> >
>>> >>
>>> >> gsub( "[ \t\n\r\f\v]" , "\\+", cidade)
>>> > [1] "Águas Lindas+de+Goiás"
>>> >>
>>> >> gsub( "[ \t\n\r\f\v]" , "\\+", cidade, useBytes=T)
>>> > [1] "Águas Lindas+de+Goiás"
>>> >
>>> > O pior é que eu consigo imprimir o "loucura" na tela, copiar e colar:
>>> >
>>> >> loucura
>>> > [1] " "     # " " copiado
>>> >> gsub( " " , "\\+", cidade) # " " colado
>>> > [1] "Águas+Lindas de Goiás"
>>> >
>>> > Existe alguma função que receba um caracter e retorne o código unicode
>>> > dele
>>> > ou algo assim?
>>> >
>>> >
>>> > Em 5 de março de 2012 11:10, Benilton Carvalho
>>> > <beniltoncarvalho em gmail.com>
>>> > escreveu:
>>> >
>>> >> Parece algo de codificacao de caracteres... Qual o resultado de:
>>> >>
>>> >> Encoding(cidade)
>>> >>
>>> >> ?
>>> >>
>>> >> E se vc converter 'cidade'?
>>> >>
>>> >> cidade <- enc2native(cidade)
>>> >>
>>> >> e tentar a partir dai'?
>>> >>
>>> >> Ou, possivelmente, usar gsub() com useBytes=TRUE ?
>>> >>
>>> >> b
>>> >>
>>> >> 2012/3/5 Lucas Barbosa <lucasbcr em gmail.com>:
>>> >> > Bom dia pessoal,
>>> >> >
>>> >> > Estou escrevendo um código para calcular a distancia entre cidades
>>> >> > brasileiras com o gmaps. Para construir os links eu preciso trocar os
>>> >> > espaços por "+" nos nomes das cidades.
>>> >> > Nos meus dados (uma lista de cidades) algumas strings contém um
>>> >> > caracter
>>> >> > que
>>> >> > parece um espaço em branco, mas não se comporta como tal:
>>> >> >
>>> >> >> cidades[[47]][[3]]
>>> >> > [1] "Águas Lindas de Goiás"
>>> >> >>
>>> >> >> cidade <- cidades[[47]][[3]]
>>> >> >>
>>> >> >> strsplit( cidade ,"[ \t\n\r\f\v]")
>>> >> > [[1]]
>>> >> > [1] "Águas Lindas" "de"           "Goiás"
>>> >> >>
>>> >> >> gsub( "[ \t\n\r\f\v]" , "\\+", cidade)
>>> >> > [1] "Águas Lindas+de+Goiás"
>>> >> >>
>>> >> >> loucura <- substr(cidade, 6, 6)
>>> >> >>
>>> >> >> gsub( loucura , "\\+", cidade)
>>> >> > [1] "Águas+Lindas de Goiás"
>>> >> >>
>>> >> >> gsub( sprintf("[%s \t\n\r\f\v]", loucura) , "\\+", cidade)
>>> >> > [1] "Águas+Lindas+de+Goiás"
>>> >> >
>>> >> > Eu consegui resolver o problema (trocar espaços por "+"), mas
>>> >> > gostaria
>>> >> > de
>>> >> > escrever meu código sem extrair o caracter "loucura" com a substr().
>>> >> >
>>> >> > Se não é [ \t\n\r\f\v], o que é? Alguém tem uma dica?
>>> >> >
>>> >> > Abs.,
>>> >> > Lucas Cusinato
>>> >> >
>>> >> > _______________________________________________
>>> >> > R-br mailing list
>>> >> > R-br em listas.c3sl.ufpr.br
>>> >> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> >> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>> >> > código
>>> >> > mínimo reproduzível.
>>> >> _______________________________________________
>>> >> R-br mailing list
>>> >> R-br em listas.c3sl.ufpr.br
>>> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>> >> código mínimo reproduzível.
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > R-br mailing list
>>> > R-br em listas.c3sl.ufpr.br
>>> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>> > código
>>> > mínimo reproduzível.
>>> _______________________________________________
>>> R-br mailing list
>>> R-br em listas.c3sl.ufpr.br
>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>> código mínimo reproduzível.
>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código
>> mínimo reproduzível.


Mais detalhes sobre a lista de discussão R-br