R语言循环生成样本均值直方图时出现'x' must be numeric错误
解决R语言直方图报错:'x' must be numeric
错误原因
你遇到的'x' must be numeric错误,核心问题是传入hist()的combined_samplesA不是数值向量——大概率是循环中存储样本均值时用了列表而非数值向量,或者初始化对象类型错误。
修正后的代码(循环版)
# 初始化长度为100的数值向量,用于存储每个样本的均值 sample_means <- numeric(100) # 循环生成100个样本并计算均值 for(i in 1:100){ # 生成单一样本:n=25,均值10,标准差10 single_sample <- rnorm(n = 25, mean = 10, sd = 10) # 将样本均值存入向量 sample_means[i] <- mean(single_sample) } # 绘制样本均值的直方图 hist(sample_means, las = 1, col = "blue", main = "100个样本量为25的样本均值直方图", xlab = "样本均值")
关键修正点
- 必须用
numeric(100)初始化存储均值的对象,确保它是数值向量类型,hist()函数仅接受数值型输入。 - 如果之前用
list()初始化combined_samplesA,存入的均值会被包裹在列表中,导致hist()无法解析。
更简洁的向量化写法(无需循环)
R中可以用replicate()替代循环,代码更简洁且效率更高:
# 一次性生成100个样本的均值 sample_means <- replicate(100, mean(rnorm(n=25, mean=10, sd=10))) # 绘制直方图 hist(sample_means, las = 1, col = "blue", main = "100个样本量为25的样本均值直方图", xlab = "样本均值")
内容的提问来源于stack exchange,提问作者Redd11
相关产品推荐
相关产品推荐

