向量上的paste()给出了多余的空格,如何将其删除?

时间:2018-12-11 19:48:30

标签: r newline whitespace paste

我正在尝试从R中的向量中的对象中删除空格。使用函数paste时遇到问题;它给了我aspace的对象。

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

c的结果是

  

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

代替:

  

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

(问题出在1985年)

3 个答案:

答案 0 :(得分:0)

不确定您的最后一步在做什么raster(c),但是我建议跳过while循环,并按照注释中的说明使用paste0:

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"

答案 1 :(得分:0)

您需要做的就是将粘贴功能中的'sep'参数设置为“” 这基本上是为了设置要粘贴的对象之间的分隔符。 默认分隔符为空格,因此您需要覆盖它。

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 

这将导致

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

答案 2 :(得分:0)

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"

默认情况下,paste用空格隔开。