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

如何为R语言数据框单行的所有值计算Z分数并生成新数据框

报错原因

你没有提前初始化z_score对象,R找不到对应的存储容器就会抛出该错误。如果要保留for循环写法,在循环前加一行z_score <- numeric(ncol(NANOG_data))初始化等长的数值向量即可解决报错。

更推荐的向量化实现(无需for循环,效率更高)

  • 如果你需要对数据框所有行逐行计算Z分数,直接转置后调用scale函数即可:
library(matrixStats)
# 计算每行的均值和标准差
row_means <- rowMeans(NANOG_data)
row_sds <- rowSds(as.matrix(NANOG_data))
# 转置后用scale标准化,再转置恢复原有行列结构
z_score_df <- as.data.frame(t(scale(t(NANOG_data), center = row_means, scale = row_sds)))
  • 如果你的数据框第一行是注释信息,仅需要计算第二行(表达量数值行)的Z分数,可以更简化:
# 提取第二行的表达量数值
expr_vals <- as.numeric(NANOG_data[2, ])
# 直接向量化计算所有样本的Z分数
z_score <- (expr_vals - mean(expr_vals)) / sd(expr_vals)
# 如需转成数据框格式
z_score_df <- as.data.frame(t(z_score))
colnames(z_score_df) <- colnames(NANOG_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:54:02