【发布时间】:2021-05-26 18:52:13
【问题描述】:
我想根据另一个矩阵的内容填充一个矩阵。以下是矩阵:
set.seed(135)
MAT1 <- replicate(6, sample(c("00", "01", "10", "11", "10"))); MAT1 <- t(MAT1)
rownames(MAT1) <- rep(letters[1:3], each = 2)
MAT1
[,1] [,2] [,3] [,4] [,5]
a "00" "01" "10" "11" "10"
a "10" "00" "01" "11" "10"
b "10" "10" "00" "11" "01"
b "11" "10" "01" "00" "10"
c "10" "00" "01" "10" "11"
c "00" "10" "11" "01" "10"
LIST <- apply(X = MAT1, MARGIN = 2, FUN = unique)
MAT2 <- matrix(data = NA, nrow = 3, ncol = length(unlist(LIST)))
rownames(MAT2) <- c(letters[1:3]); colnames(MAT2) <- unlist(LIST)
MAT2 <- rbind(Hap = rep(1:length(LIST), lengths(LIST)), MAT2)
MAT2
1 1 1 2 2 2 3 3 3 3 4 4 4 4 5 5 5
Hap 00 10 11 01 00 10 10 01 00 11 11 00 10 01 10 01 11
a NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
b NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
c NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
MAT2 (MAT2[1,]) 的第一行 (Hap) 包含 MAT1 的每一列的模态,但删除了重复的模态。在colnames(MAT2) 中,1 1 1 表示 MAT1 的第 1 列有三种独特的模态,2 2 2 表示 MAT1 的第 2 列有三种独特的模态,以此类推。
由于 MAT1,我想填充 MAT2,以便对于给定的 Hap 和 colnames,它根据 Hap 在MAT1 中出现的次数填充 0、1 或 2。
以下是预期的MAT2:
1 1 1 2 2 2 3 3 3 3 4 4 4 4 5 5 5
Hap 00 10 11 01 00 10 10 01 00 11 11 00 10 01 10 01 11
a 1 1 0 1 1 0 1 1 0 0 2 0 0 0 2 0 0
b 0 1 1 0 0 2 0 1 1 0 1 1 0 0 1 1 0
c 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 0 1
【问题讨论】:
标签: r