在R构建存在-缺失数据集时遇‘lon未找到’错误,求解决方案
解决
coordinates(present)=~lon+lat的"object 'lon' not found"错误 这个报错的核心原因很直接:你的present数据框里没有名为lon和lat的列,所以公式~lon+lat找不到对应的变量。下面是具体的排查和解决步骤:
1. 先确认你的数据列名
先运行这条代码查看present数据框的真实列名:
colnames(present) # 或者更直观地查看前几行数据细节 head(present)
你会发现实际的经度/纬度列名可能是别的命名,比如Longitude、Latitude、X、Y或者带坐标系后缀的lon_WGS84这类名字。
2. 修改coordinates语句匹配实际列名
把公式里的lon和lat替换成你数据里的真实列名就行。举几个常见例子:
- 如果列名是
Long和Lat:coordinates(present) = ~Long+Lat - 如果列名是
X和Y:coordinates(present) = ~X+Y
额外的脚本优化建议
看你的现有脚本还有几个可以简化的地方,能让后续建模更顺畅:
- 你重复加载了
raster包多次,只需要在脚本开头加载一次就足够 - 生成伪缺失点后,也可以把
bg/bg2转成空间对象,方便后续提取栅格值:bg_sp <- SpatialPoints(bg, proj4string = crs(mask)) - 后续提取植被栅格值并合并成建模数据集的示例:
# 提取存在点的栅格值 present_vals <- extract(r, present) # 提取伪缺失点的栅格值 bg_vals <- extract(r, bg_sp) # 合并为存在-缺失建模数据集 habitat_data <- rbind( data.frame(veg_value = present_vals, presence = 1), data.frame(veg_value = bg_vals, presence = 0) )
错误信息回顾:
coordinates(present)=~lon+lat Error in eval(predvars, data, env) : object 'lon' not found
内容的提问来源于stack exchange,提问作者kate
相关产品推荐
相关产品推荐

