调用dplyr::rename重命名sf对象列时遇‘找不到agr列’内部错误求助
解决sf分组对象重命名时的"can't find agr columns"错误
问题原因
你的数据是分组后的sf对象(同时具有grouped_df和sf类),sf对象自带agr属性(Attribute-Geometry Relationship),用于记录非几何列与几何列的关联关系。在分组状态下使用dplyr::rename时,无法正确维护这个agr属性,从而触发内部错误。
解决方案
最简便的处理方式是先取消分组,完成重命名后再按需恢复分组:
# 取消分组 → 重命名 → (可选)重新分组 IDD_nhmap %>% dplyr::ungroup() %>% dplyr::rename(bi_class_svi_ProjectB = bi_class) %>% # 如果需要保留原分组,替换成你的分组列名 dplyr::group_by(your_grouping_column)
备选方案(手动维护agr属性)
如果需要严格保留原agr属性的对应关系,可以手动修改属性后再操作:
# 提取当前的agr属性 current_agr <- sf::st_agr(IDD_nhmap) # 重命名agr中对应的列名 names(current_agr)[names(current_agr) == "bi_class"] <- "bi_class_svi_ProjectB" # 执行重命名并恢复agr属性、分组 IDD_nhmap %>% dplyr::ungroup() %>% dplyr::rename(bi_class_svi_ProjectB = bi_class) %>% sf::st_agr(current_agr) %>% dplyr::group_by(your_grouping_column)
内容的提问来源于stack exchange,提问作者Nader Mehri
相关产品推荐
相关产品推荐

