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

如何在terra包的SpatVector中提取指定列数据?

解决terra包SpatVector提取属性列的问题

terra包的SpatVector对象和rgdal的SpatialPolygonsDataFrame结构不同,没有data这个槽位,所以camera@data会报错,下面是几种替代的正确操作方式:

  • 直接按列名提取单个值:用$符号直接访问目标列,循环里取第i个值可以写:

    camera$Cat_ID[i]
    
  • 用索引方式提取:和数据框的索引逻辑一致,支持指定行和列:

    camera[i, "Cat_ID"]
    
  • 转成数据框操作:如果习惯用数据框的处理方式,可以先把SpatVector的属性表转成普通数据框:

    camera_df <- as.data.frame(camera)
    camera_df[i, "Cat_ID"]
    

另外,你之前试的camera@names和camera$names都不对,获取SpatVector的列名应该用names(camera)。

如果你的需求只是把Cat_ID列全部存入结果数据框,其实不需要循环,直接提取整列更高效:

result_df <- data.frame(Cat_ID = camera$Cat_ID)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:22:02