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

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


no R-2.14.1 tambem...

2012/3/5 Benilton Carvalho <beniltoncarvalho em gmail.com>:
> 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