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

关于dplyr::slice()与rep()组合实现数据框行重复的原理问询

拆解slice(df, rep(1:n(), each = 3))的执行逻辑

我们可以把这条命令拆成两个关键环节来看,就能明白它怎么实现每行重复3次的效果:

1. 先生成重复的行索引序列

  • 首先,n()在这里就是原数据框df的行数——也就是3,所以1:n()会生成一个简单的索引序列:1, 2, 3。
  • 接着rep(1:n(), each = 3)会把这个序列里的每个元素都重复3次,最终得到的索引列表是:1, 1, 1, 2, 2, 2, 3, 3, 3。

2. slice()按索引提取行

dplyr::slice()的工作逻辑很直接:你给它一组行索引,它就按照顺序依次提取对应位置的行:

  • 前三个1会连续提取df的第1行(也就是Column1="a", Column2=1)三次;
  • 中间三个2连续提取df的第2行(Column1="b", Column2=2)三次;
  • 最后三个3连续提取df的第3行(Column1="c", Column2=3)三次。

最终结果

这样组合下来,生成的df2就是一个9行的数据集,原df的每一行都被重复了3次,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:59:57