当矩阵可以有可变行数时,我想从矩阵的每一行展开expand

时间:2015-05-25 15:15:01

标签: r matrix combinations

myMatrix <- matrix(c(1,2,3,4,5,6),2,3, byrow=T) # line 1

exp.myMatrix <- function(myMatrix) { # line 2
  for (rownum in 1:nrow(myMatrix)) assign(paste("R",rownum, sep=""), myMatrix[rownum,]) # line 3
  Combinations <- do.call(expand.grid, lapply(ls(pattern='^R\\d$'), get)) # line 4
  rm(list=ls(pattern='^R\\d$')) # line 5
  return(Combinations) # line 6
} # line 7

Combinations <- exp.myMatrix(myMatrix) # line 8

上面的代码给出错误:“FUN中的错误(X [[i]],...):找不到对象'R1'”。

但是,当我不使用该功能并仅运行第1,3,4,5行时,我没有收到任何错误。但我需要通过函数传递myMatrix,因为矩阵的行数可变。还要注意我需要运行第5行,因为我需要清除下一个矩阵的变量,这个矩阵的行数可能比前一个矩阵少。

1 个答案:

答案 0 :(得分:0)

你必须使用:

do.call(expand.grid, split(myMatrix, rep(1:nrow(myMatrix), ncol(myMatrix))))

#  1 2
#1 1 4
#2 2 4
#3 3 4
#4 1 5
#5 2 5
#6 3 5
#7 1 6
#8 2 6
#9 3 6