2
我遇到問題;我想創建一個從結構這樣的二元矩陣開始一個新的矩陣:在二進制矩陣中提取值爲1的列名稱
A B C D E F
G 0 0 1 1 0 0
H 0 0 0 1 1 0
I 0 0 0 0 1 0
L 1 1 0 0 0 0
我想創建由開始一排名稱做了新的矩陣,和一個新的和獨特的柱,稱爲X,每行包含每次對應矩陣數爲1時列的名稱/名稱。
我該怎麼辦?
我遇到問題;我想創建一個從結構這樣的二元矩陣開始一個新的矩陣:在二進制矩陣中提取值爲1的列名稱
A B C D E F
G 0 0 1 1 0 0
H 0 0 0 1 1 0
I 0 0 0 0 1 0
L 1 1 0 0 0 0
我想創建由開始一排名稱做了新的矩陣,和一個新的和獨特的柱,稱爲X,每行包含每次對應矩陣數爲1時列的名稱/名稱。
我該怎麼辦?
試試這個地方m
是你的矩陣:
as.matrix(apply(m==1,1,function(a) paste0(colnames(m)[a], collapse = "")))
# [,1]
#G "CD"
#H "DE"
#I "E"
#L "AB"
另一種選擇其中可能是更快,如果m
很大:
t <- which(m==1, arr.ind = TRUE)
as.matrix(aggregate(col~row, cbind(row=rownames(t), col=t[,2]), function(x)
paste0(colnames(m)[x], collapse = "")))
我測試了一個dim'1e + 5 x 100'矩陣所用的時間,第一種方法要快得多。 – 989
參見[這個類似的職位(https://開頭計算器.com/questions/36304404/create-a-new-column-with-non-null-columns-names) –