如何在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
相关产品推荐
相关产品推荐

