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

如何在R语言中将10组不同rnorm()结果存入向量及统计分析

解决你的正态分布序列统计与数据框整理问题

你当前代码的问题

  • 用vector(length = 10)创建的是原子向量,只能存储单个值(比如数字、字符),没法存长度150的序列,得用列表来存这类复杂元素。
  • 你把hist()的结果赋值给data[i],但hist()返回的是直方图的统计对象,不是你需要的原始随机序列,完全搞错了存储目标。

正确实现步骤与代码

第一步:创建存储随机序列的列表

先存好10组长度150的正态分布随机序列,同时可以顺便画出每组的直方图:

# 创建长度为10的列表,用来存每组随机序列
data_list <- vector("list", length = 10)

for(i in 1:10) {
  # 生成并保存随机序列
  data_list[[i]] <- rnorm(150, 75, 10)
  # 绘制直方图,标注组别
  hist(data_list[[i]], main = paste("第", i, "组正态分布直方图"))
}

这里用vector("list", 10)创建列表,通过[[i]]访问列表元素,才能存下长度150的向量。

第二步:计算统计量并整理成数据框

可以用两种方式实现,选你顺手的就行:

方式1:循环处理
# 初始化空数据框,预设列名和数据类型
stats_df <- data.frame(
  最小值 = numeric(10),
  最大值 = numeric(10),
  均值 = numeric(10),
  中位数 = numeric(10)
)

# 遍历每组序列,计算统计量并填入数据框
for(i in 1:10) {
  current_seq <- data_list[[i]]
  stats_df$最小值[i] <- min(current_seq)
  stats_df$最大值[i] <- max(current_seq)
  stats_df$均值[i] <- mean(current_seq)
  stats_df$中位数[i] <- median(current_seq)
}
方式2:用lapply简化(更简洁的R风格)
# 定义一个函数,输入序列返回四个统计量的向量
calc_stats <- function(x) {
  c(
    最小值 = min(x),
    最大值 = max(x),
    均值 = mean(x),
    中位数 = median(x)
  )
}

# 对列表每个元素应用统计函数,转置后转为数据框
stats_df <- as.data.frame(t(sapply(data_list, calc_stats)))

运行后,stats_df就是你需要的结果:10行对应10组序列,4列对应最小值、最大值、均值、中位数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:45:38