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

如何提取tibble列表列中rle结果的最大游程长度并新增列?

报错原因

你在rowwise分组运算环境下调用了x$runs,该语法会提取整个数据集的runs列表列(共4个元素),外层map_int返回长度为4的整数向量,但rowwise模式要求每行的新列计算结果长度为1,因此触发长度不匹配报错。

修复代码

写法1(保留rowwise模式,最简写法)

直接调用当前行的runs对象计算最大值即可,不需要额外调用map遍历全列:

x <- x %>%
  rowwise() %>%
  mutate(run_max = max(runs$lengths))

写法2(非rowwise的purrr列遍历写法)

不需要rowwise分组,直接对runs列做逐元素映射计算:

x <- x %>%
  mutate(run_max = map_int(runs, ~ max(.x$lengths)))

写法3(一步到位,无需提前生成runs列)

如果不需要保留中间的游程结果,可以直接在计算最大游程长度时同步完成rle计算:

x <- tribble(
  ~x1, ~x2, ~x3, ~x4, ~x5, ~x6,
  1,  1, 1, 1, 1, 1, 
  3, 3, 3, 2, 5, 3,
  3, 3, 3, 3, 3, 3,
  4, 4, 5, 5, 5, 5 
) %>%
  rowwise() %>%
  mutate(
    run_max = max(rle(c_across(x1:x6))$lengths)
  )

内容的提问来源于stack exchange,提问作者J Kennedy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:42:00