francisco corvalan
francisco corvalan

Reputation: 320

paste() on a vector gives unwanted whitespace, how to remove it?

I am trying to remove whitespace from objects in a vector in R. I have problems when I use the function paste; it gives me the objects of a with a space.

a <- c(1985, 1986, 2004)
i <- 0
while(i<(length(a))) {
  i <- i+1
  b <- (paste("C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/",
      a[[i]]))
  c <- paste(b,"/Invierno/band3.tif")
  (paste(a[[i]],"3")) <- raster(c)
}
c

And the result of c is

"C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/ 1985 /Invierno/band3.tif"

instead of:

"C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/1985/Invierno/band3.tif"

(The problem is in the year 1985)

Upvotes: 2

Views: 9263

Answers (3)

igorkf
igorkf

Reputation: 3565

a <- c(1985, 1986, 2004)

#You can use paste0:
paste0("C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/", a, "/Invierno/band3.tif")
#[1] "C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/1985/Invierno/band3.tif"
#[2] "C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/1986/Invierno/band3.tif"
#[3] "C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/2004/Invierno/band3.tif"

#or paste:
paste("C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/", a, "/Invierno/band3.tif", sep = "")
#[1] "C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/1985/Invierno/band3.tif"
#[2] "C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/1986/Invierno/band3.tif"
#[3] "C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/2004/Invierno/band3.tif"

By default, paste separate the parts by a space.

Upvotes: 0

Fahadakbar
Fahadakbar

Reputation: 518

all you need is to set the 'sep' argument in paste function to "" this is basically to set the separators between the objects you are pasting togather. default separator is a white-space, so you need to override that.

a <- c(1985, 1986, 2004)
i <- 0
while(i<(length(a)))
{
  i <- i+1
  b <- paste("C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/", a[[i]] , sep = '')
  c <- paste(b,"/Invierno/band3.tif", sep='')
  (paste(a[[i]],"3")) <- raster(c)
}
c 

This would result in

"C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/1985/Invierno/band3.tif"

Upvotes: 1

Chuck Ramirez
Chuck Ramirez

Reputation: 255

Not sure about what your the last step is doing raster(c), but I'd suggest to skip the while loop and use paste0 as said in the comments:

paste0("C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/",
       c(1985, 1986, 2004),
       "/Invierno/band3.tif")
# "C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/1985/Invierno/band3.tif"
# "C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/1986/Invierno/band3.tif"
# "C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/2004/Invierno/band3.tif"

Upvotes: 4

Related Questions