paste () на векторе дает нежелательный пробел, как его убрать? - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь удалить пробелы из объектов в векторе R. У меня проблемы с использованием функции paste;это дает мне объекты 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

И результат c равен

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

вместо:

" C: / Пользователи / frank / Documents / Fran / Tesis / Sin sincronizar / Imagenes Landsat / 1985 / Invierno / band3.tif"

(проблема в 1985 году)

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

все, что вам нужно, это установить аргумент '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 "

0 голосов
/ 27 февраля 2019
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 разделяет части пробелом.

0 голосов
/ 11 декабря 2018

Не уверен насчет того, что делает ваш последний шаг 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"
...