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

rowwise类tibble使用slice_sample抽样返回全部行的原因及解决咨询

问题原因

带rowwise属性的tibble本质是每行作为独立分组的分组数据结构,你提供的df.B的groups字段可验证:10行数据对应10个独立分组,每个分组仅包含1行。
dplyr的切片类函数(包括slice_sample)默认按分组执行操作:你指定n=2时,函数会尝试从每个分组抽取2行,但每个分组仅有1行数据,因此每个分组返回全部1行,汇总后就是全部10行数据,这就是返回全部行的原因。

解决方法

无需预先将df.B转换为普通data.frame,可使用以下两种方案:

  • 方案1:临时取消行分组属性完成抽样,若后续仍需要rowwise属性可执行恢复操作
    library(dplyr)
    # 临时取消分组抽样,按需可在末尾加%>% rowwise()恢复行分组
    df.B %>% ungroup() %>% slice_sample(n = 2)
    
  • 方案2:指定by = NULL参数强制按整个数据集而非分组执行抽样,该参数在dplyr 1.1.0及以上版本支持,代码更简洁
    library(dplyr)
    df.B %>% slice_sample(n = 2, by = NULL)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:39:03