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

如何用tidyverse基于seqnbr列创建数值列表并执行unnest?

解决方案

可以用dplyr结合purrr的map()函数实现需求,具体步骤如下:

  1. 生成嵌套序列列
    通过mutate()配合map(),针对每行seqnbr的值生成从该值到10的整数序列,并封装为列表:
library(tidyverse)

x <- tibble(name = c('boo', 'bah', 'bee'),
            seqnbr = c(1,2,3))

# 添加嵌套列表列
x_with_list <- x %>%
  mutate(my_list = map(seqnbr, ~.x:10))

执行后得到的结果与预期一致:

# A tibble: 3 × 3
  name  seqnbr my_list  
  <chr>  <dbl> <list>   
1 boo        1 <int [10]>
2 bah        2 <int [9]> 
3 bee        3 <int [8]> 
  1. 展开嵌套列表
    使用unnest()(或unnest_longer())将嵌套的列表列展开:
x_unnested <- x_with_list %>%
  unnest(my_list)

展开后的最终结果:

# A tibble: 27 × 3
   name  seqnbr my_list
   <chr>  <dbl>   <int>
 1 boo        1       1
 2 boo        1       2
 3 boo        1       3
 4 boo        1       4
 5 boo        1       5
 6 boo        1       6
 7 boo        1       7
 8 boo        1       8
 9 boo        1       9
10 boo        1      10
# ℹ 17 more rows

补充说明

  • map(seqnbr, ~.x:10)中,~代表匿名函数,.x指代seqnbr列的每个元素,自动生成对应起始值到10的序列,map()会将每个序列封装为列表元素对应到每行。
  • 也可以写成更直观的匿名函数形式:map(seqnbr, function(n) n:10),效果完全相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:50:36