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

R语言split处理列后保留原列名 提取列内数值序列最大值

问题说明

现有R数据框中部分列以列表形式存储连续数值序列,需要提取每个序列的最大值作为对应单元格的值,要求保留原有列结构与列名,不能通过拆分生成额外列。
示例输入数据:

dat <- structure(list(X1 = list(1:15), X2 = list(106L), X3 = list(134L), 
    X4 = list(139L), X5 = list(141:142)), class = "data.frame", row.names = c(NA, 
-1L))

预期输出结果:

X1  X2  X3  X4  X5
1 15 106 134 139 142
实现方案

无需使用split函数拆分列,直接对列表列的每个元素取最大值即可,全程保留原数据框的列名、结构不变。

Base R 无依赖实现

dat[] <- lapply(dat, function(col) sapply(col, max))
  • 赋值时使用dat[]而非直接给dat赋值,是为了保留数据框的原生属性,避免结果被转换为列表等其他类型
  • 对于本身就是单值的列(如示例中的X2、X3、X4),max函数会直接返回原值,不需要额外做分支判断
    运行后直接查看dat即可得到预期结果。

Tidyverse 实现

如果习惯使用tidyverse生态的语法,可通过dplyr+purrr实现:

library(dplyr)
library(purrr)

dat <- dat %>% 
  mutate(across(everything(), ~map_dbl(.x, max)))

内容的提问来源于stack exchange,提问作者Aravindan Kalai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:39:25