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

如何在R语言中基于DataFrame创建嵌套列表并重复指定长度的x值

R语言实现按月份-年份嵌套列表并重复x值

首先注意你的df是矩阵类型,先转成数据框更方便处理:

df <- as.data.frame(df)

方法1:基础R(lapply)实现

假设指定重复长度为n=2,代码如下:

# 设置重复长度
repeat_length <- 2

# 生成嵌套列表
result <- lapply(unique(df$month), function(month_val) {
  # 筛选当前月份的数据
  month_data <- df[df$month == month_val, ]
  # 按年份生成内层列表,重复x值
  lapply(unique(month_data$year), function(year_val) {
    x_value <- month_data[month_data$year == year_val, "x"]
    rep(x_value, times = repeat_length)
  })
})

# 给列表命名,提升可读性
names(result) <- paste0("month_", unique(df$month))
for (idx in seq_along(result)) {
  current_month <- unique(df$month)[idx]
  names(result[[idx]]) <- unique(df[df$month == current_month, "year"])
}

方法2:tidyverse(purrr)实现

如果习惯用tidyverse生态,用purrr的map函数更简洁:

library(tidyverse)

repeat_length <- 2

result <- df %>%
  # 按月份拆分外层
  split(.$month) %>%
  # 对每个月份数据,按年份拆分内层并重复x值
  map(function(month_df) {
    month_df %>%
      split(.$year) %>%
      map(~ rep(.$x, times = repeat_length))
  })

结果说明

最终的result是嵌套列表:

  • 外层每个元素对应一个月份,名称为month_1、month_2等
  • 每个月份元素下的内层列表对应该月份的各个年份,名称为具体年份(如2000、2001)
  • 内层列表的每个值是对应x重复指定长度后的向量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:42:35