[R] problem with sub()

Petr Savicky savicky at cs.cas.cz
Sun Jun 10 23:05:39 CEST 2012


On Sun, Jun 10, 2012 at 11:44:33AM -0700, t_o_b_y wrote:
> Dear R users:
> 
> 
> 
> I want to convert some character vectors into numeric vectors.
> 
> > head(price)
> [1] "15450 EUR" "7900 EUR"  "13800 EUR" "3990 EUR"  "4500 EUR" 
> [6] "4250 EUR"
> 
> >head(mileage)
> [1] "21000 km"  "119000 km" "36600 km"  "92000 km"  "140200 km"
> [6] "90000 km"
> 
> in the first example I can use:
> 
> price <- sub(" EUR",  "",  price)
> 
> to get
> 
> "15450" "7900"  "13800" "3990"  "4500"  "4250"
> 
> but in the second example it doesn't work with
> 
> mileage <- sub(" km, "", mileage)

Hi.

The problem is that "21000 km" does not contain a space, but
a no-break space. This may be checked by

  charToRaw("21000 km") # copied from your email

  [1] 32 31 30 30 30 c2 a0 6b 6d

  charToRaw("21000 km") # after rewriting the space to a normal space

  [1] 32 31 30 30 30 20 6b 6d

Either replace the no-break spaces by normal spaces, or use the
abbreviation "\u00a0" for no-break space.

  mileage <- c("21000 km", "119000 km", "36600 km") # copied from your email
  sub("\u00a0km", "", mileage)

  [1] "21000"  "119000" "36600" 

Hope this helps.

Petr Savicky.



More information about the R-help mailing list