You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用vect()创建带属性的SpatVect时出现unused argument错误

解决terra::vect()添加属性时的"unused argument"错误

你遇到的问题根源很直接:terra包的vect()函数并不支持atts这个参数,所以传入该参数会触发“未使用参数”的错误。

下面是两种正确给SpatVect对象添加属性的可行方法:

方法1:合并坐标与属性数据后一次性创建

把坐标数据和属性数据合并成一个完整的data.frame,再传入vect(),函数会自动将非坐标列识别为属性:

long_lat <- data.frame(lon = c(18.5,18.5,18.5,18.6,18.6), lat = c(-34, -33.9, -33.6,-33.6,-34))
atts <- data.frame(imi = c(123, 0.4, 706,21,9))

# 合并坐标与属性数据
combined_data <- cbind(long_lat, atts)
# 创建带属性的SpatVect对象
pts_jan <- vect(combined_data, crs="+proj=longlat +datum=WGS84 +no_defs")

方法2:先创建空属性对象,再补充属性

先生成不带属性的SpatVect对象,再通过values()函数为其添加属性:

long_lat <- data.frame(lon = c(18.5,18.5,18.5,18.6,18.6), lat = c(-34, -33.9, -33.6,-33.6,-34))
atts <- data.frame(imi = c(123, 0.4, 706,21,9))

# 先创建无属性的点对象
pts_jan <- vect(long_lat, crs="+proj=longlat +datum=WGS84 +no_defs")
# 为对象添加属性
values(pts_jan) <- atts

关键注意点

  • 必须保证属性数据的行数和坐标点数量完全匹配(你当前的代码中两者都是5行,符合要求)
  • 如果用方法1,若坐标列名称不是lon/lat或x/y,需要额外通过geom参数指定坐标列位置

内容的提问来源于stack exchange,提问作者JDK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:33:09