首页 > 解决方案 > 发出 lapply 多个数据帧

问题描述

我正在尝试将函数应用于数据框列表。数据框是三个地理参考点列表。我想为每个数据框添加一列,其中包含有关每个点所在的单元格的单元格 ID 的信息。

这是功能:

vectorData<-list(df1,df2,df3)
lapply(vectorData,function(x){x<-spatialEco::point.in.poly(x,grid)})

它给了我适当的结果,但是我想将此结果存储在每个数据帧的新列中。

如果我使用以下代码为每个数据帧执行此操作,则它可以正常工作:

df1<-spatialEco::point.in.poly(ds1,grid)

标签: rloopslapply

解决方案


根据 的文档point.in.poly,默认情况下,它返回一个sp对象。因此,您将无法将其分配给 data.frames 的新列。

一种方法是预先初始化 aresult列表并将输出分配给列表的point.in.poly元素:

result <- list()
for (i in seq_along(vectorData)) {
  result[[i]] <- spatialEco::point.in.poly(vectorData[[i]],grid)
}

推荐阅读