![](/img/trans.png)
[英]R: Create a list of combinations of row names and column names and rank them
[英]Create list in R for column names
我正在嘗試創建一個列表,該列表將有所不同,並且可以針對不同的用途進行互換。 我希望它采用以下模式:
P1A1 P1A2 P1A3 P1A4 P1A5 P1A6
P2A1 P2A2 P2A3 P2A4 P2A5 P2A6
P3A1 P3A2 P3A3 P3A4 P3A5 P3A6
其中P從1到num個補丁,而A從1到numall等位基因。 因此,對於上面的示例,num.Patches = 3和num.alleles = 6
我正在嘗試使用for循環:
pdum <- matrix(data=NA,nrow=1,ncol=num.Patches)
Adum <- matrix(data=NA,nrow=1,ncol=num.allele*num.Patches+1)
key2 <- matrix(data=NA,nrow=1,ncol=num.allele*num.Patches+1)
for (i in 1:num.Patches) pdum[1,i] <- matrix(paste("P",i,sep=""))
pdum2 <- as.character(pdum)
for (k in 1:num.Patches){
for (i in pdum2) {
for (j in 1:num.allele){
Adum[1,k+num.allele*(1-j)] <- matrix(paste(i,"A",j,sep=""))
}
}
}
我遇到的問題是:
Adum[1,k+num.allele*(1-j)] <- matrix(paste(i,"A",j,sep=""))
我不知道如何引用Adum矩陣的每個條目並用特定值填充它。 這樣做的最終目的是創建一個列表,用作更大矩陣的列名,以便可以輕松地對其進行引用。
非常感謝你。
要獲取1:num.Patches和1:num.alleles的所有組合,然后進行組合,可以嘗試:
combinations <- expand.grid(1:num.Patches, 1:num.alleles)
names <- paste0("P", combinations[,1], "A", combinations[,2])
這將為您提供所需的模式(作為矢量)。 您以后可以將它們設置為您創建的某些矩陣的列名稱。
您正在尋找outer
:
num.Patches <- 3
num.alleles <- 6
mm <- outer(seq(num.Patches), seq(num.alleles),
function(x,y)paste0('P',x,'A',y))
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "P1A1" "P1A2" "P1A3" "P1A4" "P1A5" "P1A6"
[2,] "P2A1" "P2A2" "P2A3" "P2A4" "P2A5" "P2A6"
[3,] "P3A1" "P3A2" "P3A3" "P3A4" "P3A5" "P3A6"
如果要獲取名稱向量:
as.vector(mm)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.