使用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
相关产品推荐
相关产品推荐

