R SF: SF点在IFELSE对齐后自动转入List,请问如何恢复?

R SF: SF point automatically transfered to List after IFELSE justification, how should I recover it?

我是 sf 的新手,所以我不确定这是一个错误还是我做了一些不合理的编码。基本上,我曾经有几个 sf 对象(这意味着如果我编码 class(geometry),R 将 return 我像 "sfc_POINT" "sfc" 这样的东西)。然而,由于这些数据中存在重复,我做了一个 Ifelse 理由来保留符合条件的点的几何形状,同时将不合格的点设置为 NA(这样我将通过某种算法为这些点分配一个新的几何形状在将来)。但是,在我获得 运行 ifelse 代码后,我发现 geometry 列的 class 自动转换为 list 并且我不能再使用它了我未来的科幻相关编码。我尝试在线搜索,但找不到将这些对象转换回 sf 对象的方法。

您可以在下面的代码中找到我所做的一个简单示例:

#Creating example sf object
DT <- data.frame(
        lat1=c(-26.3, -27.1, -26.8),
        long1=c(27.3, 28.5, 28.2),
        lat2=c(-26.5, -26.9, -27.2),
        long2=c(28.3, 27.5, 28.1))
DT$geometry <- st_geometry(st_as_sf(DT,coords = c("lat1","long1")))
class(DT$geometry)
#Now it is still "sfc_POINT" "sfc"

# Add some justification column for IFELSE
DT <- DT %>% 
  mutate(originDestinType = rep(c(0, 1), length.out = n()))

#I want to set the point with "1" in the originDestinType to NA so that 
#I can change it by some algorithm in the future
DT$geometry <- ifelse(DT$originDestinType == 0,
                      DT$geometry,
                      NA)

#But now the geometry column is changed to list, without geometry feature it used to have 
class(DT$geometry)

我想知道您是否有任何将 sf 几何图形传回的技巧?或者是否有更好的方法来解决我想要实现的功能(将某些行的几何设置为 NA 以备将来使用)?非常感谢您的提前帮助!

如果我没有正确理解您的要求,您只需在代码结尾添加以下行:

DT$geometry <- st_as_sfc(DT$geometry, crs = st_crs(4326))

您只需检查EPSG代码(如有必要,输入适合您的代码)。供参考,这里我已经标明了WGS84地理坐标系对应的代码。