R:结果向量未出现在 For 循环中

R: Result vector is not showing up in For Loop

好的,所以我是 R 的新手,但到目前为止我已经取得了一些相当不错的成功 - 我正在 运行 在两个数据帧的相应行之间进行统计测试(好吧,一个只是一个一串值,因为它只有一列)。我希望使用以下 For 循环:

zvalues = NULL
zvalues = numeric(0)
for(i in seq(nrow(geneexpx))){
  zvalues[i] <- try(unname((geneexpx[i]-rowMeans(geneexpy[i,])) / rowSds(geneexpy[i,])))
}

问题是,结果 zvalues numeric 是空的。我不知道为什么。我可以 运行 对单行使用相同的功能,而且效果很好。例如:

s = unname(geneexpx[4]-rowMeans(geneexpy[4,])) / rowSds(geneexpy[4,])
s
[1] -2.431277e+156

如果您对可能出现的问题有任何想法,请告诉我。

编辑:
geneexpx 负责人:

c(1.501400411, -0.818584726, -0.455614921, -0.138022494, -1.213938495, -0.536465133)  

geneexpy很大,但是每一列都和上面的geneexpx差不多

你这里发生了几件事。首先,您需要将 zvalues 定义为向量。其次,rowMeansrowSds 是对矩阵而非向量的运算。通过选择 greneecxpy[i, ],您将选择矩阵的第 i 行,这将是一个向量。

你没有提供geneexpy所以我补了一个:

zvalues = rep(NA, length(geneexpx))
geneexpy <- matrix(runif(60), nrow = 6)
for(i in seq_along(geneexpx)){
  zvalues[i] <- (geneexpx[i] - mean(geneexpy[i,])) / sd(geneexpy[i,])
}

> zvalues
[1]  3.772994 -4.283168 -2.812811 -2.074548 -5.649359 -4.323920