У меня есть несколько растровых файлов, из которых я хочу извлечь значения из одного и того же набора координат 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-файл?