0
我想知道是否有辦法使用apply函數做下面的矩陣人口?我已經讀過,應用比循環更有效率。出於某種原因,我與應用函數家族掙扎。嵌套for循環使用應用函數
我正在尋找填充矩陣。我將數據框中的數據用作數據總體的條件。
下面是一個數據邏輯的例子;它是簡化的,但它涵蓋了基於規則的人口的基本要素。
id_1 <- c(1, 1, 1, 1, 1, 1)
id_2 <- c(1, 1, 2, 2, 3, 3)
id_3 <- c(1, 2, 2, 3, 3, 4)
amt <- c(10, 15, 20, 25, 30, 35)
sample_data <- data.frame(id_1, id_2, id_3, amt)
n <- length(sample_data)
cor <- matrix(ncol = n, nrow = n)
i <- 1
j <- 1
for (i in 1:n) {
for (j in 1:n) {
if (i == j) {
cor[i,j] = 1
} else if (sample_data[2][i,] == sample_data[2][j,] & sample_data[3][i,] != sample_data[3][j,]) {
cor[i,j] = 0
} else if (sample_data[2][i,] != sample_data[2][j,] & sample_data[3][i,] == sample_data[3][j,]) {
cor[i,j] = 0.5
} else {
cor[i,j] = 0.25
}
}
}
cor
[,1] [,2] [,3] [,4]
[1,] 1.00 0.00 0.25 0.25
[2,] 0.00 1.00 0.50 0.25
[3,] 0.25 0.50 1.00 0.00
[4,] 0.25 0.25 0.00 1.00