r - 发出 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)
解决方案
根据 的文档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)
}
推荐阅读
- python - 使用 Python 发送的 WhatsApp 消息中的换行符
- regex - VSCode 在片段中链接正则表达式转换
- java - Karaf:连接被拒绝(公司代理,但代理在 Karaf/Maven 中正确配置)
- python-3.x - 如何防止 Tkinter 从属小部件指示自己的位置?
- python - 不和谐授权申请
- c++ - std::unordered_map 无法使用 std::map 成功的父类型编译
- objectmapper - jackson 中的 ObjectMapper 错误(消息:没有从字符串值反序列化的字符串参数构造函数/工厂方法)
- java - SpringBoot - 关系的实体传播
- c# - 来自键盘 Unity 的 CZ 字符
- java - Android 无法使用自定义样式在微调器中居中文本