這裏我有一個5 * 4的矩陣(原來大得多)。我想計算矩陣每一行中每對唯一對的比率。計算矩陣中每一行唯一對的劃分
X1 X2 X3 X4
10 8 2 1
4 4 3 6
2 10 8 1
1 2 1 10
3 5 5 4
我想實現與非重複分裂5 * 6矩陣,如下所示>
x1/x2 x1/x3 x1/x4 x2/x3 x2x4 x3/x4
1.25 5.00 10.00 4.00 8.00 2.00
1.00 1.33 0.67 1.33 0.67 0.50
0.20 0.25 2.00 1.25 10.00 8.00
0.50 1.00 0.10 2.00 0.20 0.10
0.60 0.60 0.75 1.00 1.25 1.25
現在我已經創建了我希望會做的伎倆一個功能,但是結果並不如預期。
set.seed(7)
test <- data.frame(replicate(4,sample(1:10,5,rep=TRUE)))
func_calcRatio <- function(theMatrix){
ratios <- outer(theMatrix, theMatrix, '/')
ratios <- ratios[upper.tri(ratios)]
return(ratios)
}
func_ratioMatrix <- function(theMatrix){
ratios_list <- list()
i = 1
l = length(theMatrix)
for (i in 1:l) {
vec <- numeric(l)
for (j in 1:l){
vec[j] <- i^j
}
myrow <- theMatrix[,1]
onerow <- func_calcRatio(myrow)
ratios_list[[i]] <- onerow
i = i+1
}
ratios_df <- do.call("rbind", ratios_list)
return(ratios_df)
}
test.ratios <- func_ratioMatrix(test)
要注意,從打印輸出,這看起來很像一個數據框,而不是一個矩陣。這是R中的一個重要區別,因爲這些不同的對象類型通常使用不同的解決方案。你可以使用'class(objectName)'在這個實例中告訴對象類型。 – lmo