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

使用tidyverse拆分列表为两列时col参数缺失报错如何解决

报错原因

unnest_wider是tidyr中独立的宽表拆分函数,不是设计给mutate/mutate_at这类逐列变换函数调用的工具。它的第一个参数要求传入操作的数据集,第二个col参数指定要拆分的列表列,你把它嵌套在mutate_at中调用时,传入的第一个参数是centroid列的向量,无法匹配它要求的col参数,因此会持续提示参数缺失。你额外添加的.cols是mutate系列函数的参数,并不会传递给unnest_wider,因此无法解决问题。

正确实现方法

你数据中的centroid是sf标准的空间点列,有两种常用的实现方案:

方案1:使用unnest_wider直接拆分

不需要嵌套mutate_at,直接调用unnest_wider指定要拆分的列即可,可通过names_repair自定义输出列名:

library(tidyverse)
library(sf)

data %>% 
  unnest_wider(centroid, names_repair = ~c("disasterno", "X", "Y"))

方案2:针对空间点列的适配方案(更推荐)

使用sf包自带的st_coordinates直接提取坐标,搭配mutate生成新列,逻辑更清晰,也可以保留原始的空间列属性:

library(tidyverse)
library(sf)

data %>% 
  mutate(
    X = st_coordinates(centroid)[,1],
    Y = st_coordinates(centroid)[,2]
  )

两种方案都可以得到包含独立坐标列的结果,你可以根据自己是否需要保留原始centroid空间列选择对应的方案。


内容的提问来源于stack exchange,提问作者me.limes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:06:03