在R中为列名创建列表

在R中为列名创建列表,r,list,R,List,我正在尝试创建一个列表,该列表将根据不同的用途而有所不同,并且可以互换。我希望它的模式是: P1A1 P1A2 P1A3 P1A4 P1A5 P1A6 P2A1 P2A2 P2A3 P2A4 P2A5 P2A6 P3A1 P3A2 P3A3 P3A4 P3A5 P3A6 其中p从1到num.Patches,A从1到num.等位基因。所以对于上面的例子,num.Patches=3,num.allegenes=6 我正在尝试使用for循环: pdum <- matrix(data=NA,n

我正在尝试创建一个列表,该列表将根据不同的用途而有所不同,并且可以互换。我希望它的模式是:

P1A1 P1A2 P1A3 P1A4 P1A5 P1A6 
P2A1 P2A2 P2A3 P2A4 P2A5 P2A6
P3A1 P3A2 P3A3 P3A4 P3A5 P3A6
其中p从1到num.Patches,A从1到num.等位基因。所以对于上面的例子,num.Patches=3,num.allegenes=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=""))
    }
  }
}

pdum要获得1:num.Patches和1:num.allegenes的所有组合,然后进行组合,您可以尝试:

combinations <- expand.grid(1:num.Patches, 1:num.alleles)
names <- paste0("P", combinations[,1], "A", combinations[,2])

组合要获得1:num.Patches和1:num.allegenes的所有组合,然后进行组合,您可以尝试:

combinations <- expand.grid(1:num.Patches, 1:num.alleles)
names <- paste0("P", combinations[,1], "A", combinations[,2])

组合您要查找的
外部

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"

您正在寻找
外部

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"

@乔西尔伯非常感谢你。这正是我需要的。我不知道有一个组合函数。@josilber非常感谢你。这正是我需要的。我不知道有一个组合函数。