R语言dataframe每行坐标向量对半拆分提取经纬度问题咨询
R单列列表型数据框拆分经纬度实现方案
核心逻辑为逐行读取坐标向量,按向量长度对半拆分后分别存储为经度、纬度两个列表列,保留原有行结构。
Tidyverse 实现(推荐)
依赖dplyr包完成逐行处理:
library(dplyr) # 拆分得到新数据框 newDF <- oldDF %>% rowwise() %>% mutate( 经度 = list(head(Column, length(Column)/2)), 纬度 = list(tail(Column, length(Column)/2)) ) %>% ungroup() # 后续需要配对生成点时,直接展开即可自动按顺序配对 # point_df <- newDF %>% unnest(c(经度, 纬度))
Base R 实现
无需加载第三方包:
# 逐行拆分坐标向量 split_list <- lapply(oldDF$Column, function(x) { mid_pos <- length(x)/2 list( 经度 = x[seq_len(mid_pos)], 纬度 = x[seq(mid_pos+1, length(x))] ) }) # 合并为新数据框,I()函数用于保留列表列结构 newDF <- data.frame( 经度 = I(lapply(split_list, `[[`, "经度")), 纬度 = I(lapply(split_list, `[[`, "纬度")) )
原split方法报错说明
split()函数的作用是按照分组因子将整个数据集拆分为不同组,无法实现对单个向量按位置对半切分的需求,因此不符合当前场景。
内容的提问来源于stack exchange,提问作者MGon
相关产品推荐
相关产品推荐

