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

R中dplyr rowwise()状态下无法更新line编号列如何解决?

问题原因

你的猜测完全正确,rowwise() 本质是一种特殊的分组状态,会将数据框的每一行设为独立分组。你在mutate中调用的min(line)、length(line)都是在单个行分组内计算的,每个分组只有1个元素,所以seq(min(line), length.out = 1)最终只会返回该行原始的数值,无法生成全局连续序列。

关闭rowwise状态的方法

  • 通用方案:使用ungroup(),可以解除所有分组状态(包括rowwise逐行分组、普通group_by分组),也就是你测试验证过的可行方案。
  • 专用方案:dplyr 1.0.0及以上版本提供了unrowwise()函数,仅解除逐行分组状态,适合需要保留其他分组规则的场景。

正确运行代码

# 方法1:通用解除分组
df %>%
  ungroup() %>%
  mutate(line = as.numeric(line),
         line = seq(min(line), length.out = length(line)))

# 方法2:仅解除逐行分组
df %>%
  unrowwise() %>%
  mutate(line = as.numeric(line),
         line = seq(min(line), length.out = length(line)))

执行后line列会从最小值302开始,生成302、303……311的连续整数序列。

内容的提问来源于stack exchange,提问作者Chris Ruehlemann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:15:07