如何在for循环中使用extract函数?

如何在for循环中使用extract函数?,r,for-loop,raster,shapefile,R,For Loop,Raster,Shapefile,我在循环中使用提取函数。见下文 for (i in 1:length(list_shp_Tanzania)){ LU_Mod2000<- extract(x=rc_Mod2000_LC, y=list_shp_Tanzania[[i]], fun=maj) } 其中,主要功能是: maj <- function(x){ y <- as.numeric(names(which.max(table(x)))) return(y) } 我希望得到I个输出,但循环完成后

我在循环中使用提取函数。见下文

for (i in 1:length(list_shp_Tanzania)){
  LU_Mod2000<- extract(x=rc_Mod2000_LC, y=list_shp_Tanzania[[i]], fun=maj)
}
其中,主要功能是:

maj <- function(x){
  y <- as.numeric(names(which.max(table(x))))
  return(y)
}

我希望得到I个输出,但循环完成后,我只得到一个输出。有人知道我做错了什么。谢谢。

在这种情况下,一种解决方案是创建一个列表,然后将每次迭代的结果分配给列表中相应的元素:

LU_Mod2000 <- vector("list", length(list_shp_Tanzania))
for (i in 1:length(list_shp_Tanzania)){
    LU_Mod2000[[i]] <- extract(x=rc_Mod2000_LC, y=list_shp_Tanzania[[i]], fun=maj)    
}

为了避免一次又一次地覆盖extract的返回值,您可能需要创建一个向量:LU_Mod2000您可以为那些不知道在哪里可以找到它的人添加extract函数的库调用吗。您知道如何在lappy函数中分配列名吗?谢谢我不知道你的意思,因为我不知道摘录会返回什么。。。它是否返回要重命名其列的数据帧?如果是,这可以通过修改lappy内部的函数来实现;i、 结果我有61个像这样的对象,我想给列的开头起个名字,“[,1][1,]12[2,]12[3,]12[4,]12[5,]12[6,]12[7,]12[8,]12[9,]12[10,]11[11,]12[13,]11[14,]12[15,]12'是的,这可以通过在lappy函数中设置colnames来实现,但每个对象中的所有行都不显示。每个对象中只剩下列头。你知道如何修复它吗?这是我的新脚本行:LU_Mod2000
LU_Mod2000 <- c(LU_Mod2000, extract(x=rc_Mod2000_LC, y=list_shp_Tanzania[[i]], fun=maj))
LU_Mod2000 <- lapply(list_shp_Tanzania, function(z) extract(x=rc_Mod2000_LC, y=z, fun=maj))