如何循环从多个栅格文件中提取值?

时间:2019-02-21 13:56:23

标签: r loops for-loop raster

我有几个栅格文件,我想使用同一组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)):     无法找到签名“矩阵”,“ 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文件?

0 个答案:

没有答案