R:结果向量未显示在For循环中

时间:2015-01-20 20:57:29

标签: r for-loop

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

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

问题是,结果zvalues数字为空。我不知道为什么。我可以为一行运行相同的功能,它工作正常。例如:

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相似。

1 个答案:

答案 0 :(得分:0)

你有几件事情在这里发生。首先,您需要将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