我想在 R 中轉換 8 個特征的一千個上(或下)矩陣中的三個定義的列(資料框)。每個矩陣在資料框中按行寫出。這是一個例子:
Dataframe with 3 columns (and 12000 rows). From this I need to have 1000 matrices (triangular):
col1 col2 col3
row1 1 2 3
row2 2 3 4
row3 7 4 5
row4 1 4 5
row5 2 4 5
row6 3 4 5
. . . .
. . . .
. . . .
row12000 1 6 9
我需要將它們轉換為 1000 個矩陣(三角形),每個矩陣有 8 個特征,并將它們放在一個串列中:將資料幀中的資料轉換為第一個矩陣的示例:
trait 1 trait2 trait3 trait4 trait5 trait6 trait7 trait8
trait1: 1(row1 col1)
trait2: 2(row1 col2) 5(row3 col3)
trait3: 3(row1 col3) 1(row4 col1) 3(row6 col1)
trait4: 2(row2 col1) 4(row4 col2) 4(row6 col2) value
trait5: 3(row2 col3) 5(row4 col3) 5(row6 col3) value value
trait6: 4(row2 col3) 2(row5 col1) . value value value
trait7: 7(row3 col1) 4(row5 col2) . value value value value
trait8: 4(row3 col2) 5(row5 col3) . value value value value value
uj5u.com熱心網友回復:
- 按行折疊矩陣值和
df向量 (all_values) 中的資料幀 ( ) 值。 - 創建 36 個值的組并將它們拆分為一個串列。
- 將 36 個值中的每一個放入 8 X 8 的下三角矩陣中,并獲得矩陣串列。
all_values <- c(t(df))
dummmy_matrix <- matrix(nrow = 8, ncol = 8,
dimnames = list(paste0('trait', 1:8), paste0('trait', 1:8)))
matrix_list <- lapply(split(all_values, ceiling(seq_along(all_values)/36)), function(x) {
dummmy_matrix[lower.tri(dummmy_matrix, diag = TRUE)] <- x
dummmy_matrix
})
matrix_list
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322311.html
上一篇:Python錯誤“串列”物件沒有屬性“is_Number”
下一篇:將“專案”從一本字典移動到新串列
