【问题标题】:issue lapply multiple dataframes发出 lapply 多个数据帧
【发布时间】:2025-12-29 00:55:07
【问题描述】:

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

这里是函数:

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

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

如果我使用以下代码对每个数据帧执行此操作,则效果很好:

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

【问题讨论】:

  • @IanCampbell,感谢您的评论。我确实在代码中添加了x$new,但结果保持不变。运行代码后,我在控制台中看到了打印结果,但它没有与其余数据帧合并。
  • @IanCampbell,再次感谢您。使用for,这个结构是否正确? vectorData&lt;-list(df1, df2, df3) for (V in vectorData){V&lt;-spatialEco::point.in.poly(V,grid)})

标签: r loops lapply


【解决方案1】:

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

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

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

【讨论】: