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

字符串我怎样才能修剪X或具有不受trimws修剪领导和/或结尾的空白任何类似的字符串?修剪有控制字符空格

披露:这个问题是trimws bug? leading whitespace not removed的延续,但我被要求创建一个单独的问题。

编辑: 这里是一个建议的代码,任何更优雅的解决方案将受到欢迎

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

你'x'gives我:'[1] “11.132592”',你想删除前面的空间价值? –

+0

@MbrMbr是的。但是'trimws'在我的x上不起作用。请参阅https://stackoverflow.com/questions/45050617/trimws-bug-leading-whitespace-not-removed/45051137#45051137 – RockScience

+2

@RockScience您是否尝试过'stringr'包中的'str_trim'?用我的R(3.3.3)版本,它会返回:'[1]“11.132592”' –

回答

4

使用str_trimstringr包。

数据:

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

,只是写:

library(stringr) 

str_trim(x) 
[1] "11.132592"