2017-07-12 1 views
2
x = rawToChar(as.raw(c(0xa0, 0x31, 0x31, 0x2e, 0x31, 0x33, 0x32, 0x35, 0x39, 0x32))) 
trimws(x) # this doesn't trim it! 

Comment puis-je couper x ou une chaîne similaire qui a conduit et/ou des espaces de fuite qui ne sont pas coupés par trimws?Coupez une chaîne qui a un caractère de contrôle des espaces

Divulgation: cette question est la continuation de trimws bug? leading whitespace not removed mais on m'a demandé de créer une question distincte.

Edit: ici est un code suggéré, une solution plus élégante serait la bienvenue

trimws2 = function(x) { 
     sapply(x, FUN=function(x) { 
      xraw = charToRaw(x) 
      xraw[xraw==as.raw(0xa0)]=charToRaw(" ") 
      trimws(rawToChar(xraw)) 
     }) 
     } 
trimws2(x) 
+0

Votre 'me x'gives ceci:' [1] "11,132592" ', vous voulez supprimer l'espace devant la valeur ? –

+0

@MbrMbr oui. Mais 'trimws' ne fonctionne pas sur mon x. Voir https://stackoverflow.com/questions/45050617/trimws-bug-leading-whitespace-not-removed/45051137#45051137 – RockScience

+2

@RockScience Avez-vous essayé 'str_trim' du paquet' stringr'? Avec ma version de R (3.3.3), il retourne: '[1] '11.132592'' –

Répondre

4

Utilisez str_trim du package stringr.

données:

> x = rawToChar(as.raw(c(0xa0, 0x31, 0x31, 0x2e, 0x31, 0x33, 0x32, 0x35, 0x39, 0x32))) 
> x 
[1] " 11.132592" 

et il suffit d'écrire:

library(stringr) 

str_trim(x) 
[1] "11.132592"