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

在R中循环从嵌套列表的每个子列表随机选4行并生成数据框

解决方案

基础R实现

你可以通过自定义函数结合基础R的lapply和do.call完成需求:

# 定义处理单个子列表的函数:对每个向量随机抽取4个元素并转成数据框
sample_sub_list <- function(sub_list) {
  sampled_vecs <- lapply(sub_list, function(x) sample(x, size = 4))
  as.data.frame(sampled_vecs)
}

# 遍历嵌套列表处理所有子列表,再合并为单个数据框
final_result <- do.call(cbind, lapply(list_all, sample_sub_list))

# 输出结果
final_result

Tidyverse 实现

如果偏好tidyverse工具链,可以用purrr和dplyr简化代码:

library(purrr)
library(dplyr)

final_result <- list_all %>%
  map(~ {
    .x %>%
      map(~ sample(.x, 4)) %>%
      bind_cols()
  }) %>%
  bind_cols()

# 输出结果
final_result

注意事项

  • 如果原列表中存在长度不足4的向量,sample会报错,此时可以添加replace = TRUE参数允许重复抽取:sample(x, size = 4, replace = TRUE);
  • 示例中b = 20:30包含11个元素、a = 1:10包含10个元素,抽取4个后长度统一为4,因此合并不会出现维度不匹配问题。

内容的提问来源于stack exchange,提问作者i.b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:31:16