【发布时间】:2014-11-12 20:01:39
【问题描述】:
我想将各种矩阵中的列传递给 for 循环。
如果我的两个矩阵的列数相同,我可能会这样做:
mat1 = matrix(rep(1:25), 5,5)
mat2 = matrix(rep(26:50), 5,5)
array.mat = array(c(mat1,mat2), dim=c(5,5,2))
mat1.ncol = ncol(mat1)
mat2.ncol = ncol(mat2)
mat.ncol = c(mat1.ncol, mat2.ncol)
mat.ncol
array.mat
for (dimi in 1:2){
dim.col = mat.ncol[dimi]
for (coli in 1:dim.col){
st = shapiro.test(array.mat[,coli,dimi])$p.value
if(st > .001){
array.mat[,coli,dimi] = log(array.mat[,coli,dimi])
}}}
但是,我的数据没有相同数量的列,所以我想改用矩阵列表。
mat1 = matrix(rep(1:10), 5,2)
mat2 = matrix(rep(26:50), 5,5)
list.mat=list(a=mat1, b=mat2)
list.mat
但我不知道如何传递矩阵的列?
list.mat$a[1:5]
给出第一个矩阵的第一列,但是如何在循环中传递 $a 和 [startindex:endindex] ?我看到的所有其他答案都倾向于传递 both 矩阵的第 i 个元素(例如,列)。我需要将两个矩阵(a 和 b)分开以供以后计算,但我希望它们在一起(两个矩阵的列表)用于这些类型的循环。 再一次,我可能只是在错误地思考这个问题。感谢您的任何想法。
【问题讨论】:
标签: arrays r list for-loop matrix