我有几个栅格文件,我想使用同一组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文件?