-1
我有大矩陣(ZS)具有五列和51695線,如:重複應用多次。我應該使用for循環嗎?
str(zs1)
num [1:51695, 1:5] 1.347 1.189 1.675 1.055 0.224 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:5] "run 1" "run 2" "run 3" "run 4" ...
我想生成包含在ZS列中的每個的5個值的中值的向量。
zs.stouffer1 = apply(zs1, MARGIN = 1, median)
我怎樣才能做到這一點在一個循環爲我的zs矩陣數量?
這是我的嘗試:
for (i in 1:23) {
zs.stouffer <- paste("zs.stouffer", i, sep = "")
value <- apply(zs[i], MARGIN = 1, median)
assign(zs.stouffer,value)
}
,但我得到:
錯誤申請(ZS [I],MARGIN = 1,中位數):昏暗(X)必須爲正長度
將矩陣放入列表中,然後使用'lapply'來遍歷列表。像'matList < - mget(ls(pattern =「zs」)); myMedianList < - lapply(matList,function(i)apply(i,MARGIN = 1,median))'。 – lmo
也可以看看'matrixStats'包。函數'rowMedians'可以讓事情變得更容易 – Sotos
如果你想知道爲什麼錯誤'zs [i]'是一個索引,如果'i = 1'則不是'zs1'。如果你願意,你必須像你在函數中那樣爲它執行'paste()'。 'paste(「zs」,i,sep =「」)'。 –