Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何计算不同大小的多个向量/矩阵的所有可能组合并同时求和列?_R_Matrix_Combinations - Fatal编程技术网

R 如何计算不同大小的多个向量/矩阵的所有可能组合并同时求和列?

R 如何计算不同大小的多个向量/矩阵的所有可能组合并同时求和列?,r,matrix,combinations,R,Matrix,Combinations,假设我有三个矩阵 A=matrix(c("a",1,2),nrow=1,ncol=3) B=matrix(c("b","c",3,4,5,6),nrow=2,ncol=3) C=matrix(c("d","e","f",7,8,9,10,11,12),nrow=3,ncol=3) 我想在总结第2列和第3列的同时,找出第1列(字符或名称)的所有可能组合。结果将是一个长度等于可能组合总数的单一矩阵,在本例中为6。结果看起来像下面的矩阵 Result <- matrix(c("abd","ab

假设我有三个矩阵

A=matrix(c("a",1,2),nrow=1,ncol=3)
B=matrix(c("b","c",3,4,5,6),nrow=2,ncol=3)
C=matrix(c("d","e","f",7,8,9,10,11,12),nrow=3,ncol=3)
我想在总结第2列和第3列的同时,找出第1列(字符或名称)的所有可能组合。结果将是一个长度等于可能组合总数的单一矩阵,在本例中为6。结果看起来像下面的矩阵

Result <- matrix(c("abd","abe","abf","acd","ace","acf",11,12,13,12,13,14,17,18,19,18,19,20),nrow=6,ncol=3)

Result您正在将
字符
数字
值混合在一个矩阵中,这将强制所有元素为
字符
。最好将矩阵定义为数字,并将
字符
值保留为行名称:

A <- matrix(c(1,2),nrow=1,dimnames=list("a",NULL))
B <- matrix(c(3,4,5,6),nrow=2,dimnames=list(c("b","c"),NULL))
C <- matrix(c(7,8,9,10,11,12),nrow=3,dimnames=list(c("d","e","f"),NULL))
#put all the matrices in a list
mlist<-list(A,B,C)
最后,我们构建行名

rownames(res)<-do.call(paste0,expand.grid(lapply(mlist,rownames)))
#    [,1] [,2]
#abd   11   17
#acd   12   18
#abe   12   18
#ace   13   19
#abf   13   19
#acf   14   20

rownames(res)我们不想假设“…”。我们希望您生成的代码能够创建可以交付测试代码的假设。如果你不能在R中创建一个矩阵,那么你应该后退10步,做一些额外的研究。我真的不知道你想要什么。请写出示例
A
B
C
以及您的预期输出。很抱歉,我的重点是在我的问题中添加一个表格,当然我应该简单地添加代码。我希望这有帮助。唯一的问题是,有没有办法将行名改为“a,b,d”而不是“abd”
rownames(res)<-do.call(paste0,expand.grid(lapply(mlist,rownames)))
#    [,1] [,2]
#abd   11   17
#acd   12   18
#abe   12   18
#ace   13   19
#abf   13   19
#acf   14   20