Как зациклить извлечение значений из нескольких растровых файлов? - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть несколько растровых файлов, из которых я хочу извлечь значения из одного и того же набора координат GPS, а затем сохранить их в виде файла CSV.Это мой скрипт:

x <- stack(D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14) #D1 - 14 are raster layers I read into R using the raster() function

y <- numeric(14)

for(i in 1:14) {
  z <- unlist(x)
  y[i] <- extract(z[i], pts) #pts is a data frame containing only x and y coordinates
  y[i] <- cbind(pts, y[i])
  write.csv(y[,,i], file=sprintf('100', i
  ))
}

Это дает мне ошибку:

Ошибка в (функция (классы, fdef, mtable): невозможно найти унаследованный метод для функции 'извлекать 'для подписи' "matrix", "data.frame" '

Если я заменю for(i in 1:14) { на for(i in x) {, это выдаст мне ошибку:

Ошибка в for (i in x) {: недопустимая последовательность цикла for ()

Если я напишу x <- c(D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14) и изменит начало цикла на for(i in x) {, это выдаст мне ошибку:

Ошибка в z [i]: недопустимый тип индекса 'S4'

Я не очень знаком с функцией цикла, поэтому я не уверен, почему она дает мнеэти ошибки. Возможно ли зациклить извлечение значений из нескольких растров, используя набор координат GPS?

Редактировать:

Я понял, с использованием y <- numeric(14) не имеет смысла, поэтому яВместо этого попробуйте:

for(i in x) {
  value <- extract(i, pts)
  value <- cbind(pts, value)
  print(head(value))
  write.csv(value, file=paste('pts', i, 'csv', sep = '.'))
}

Это работает, однако создается только один CSV-файл, содержащий общие значения, и имя файла не следует за "ptsi.csv".Как исправить это так, чтобы на каждый растровый файл создавался один CSV-файл?

...