R на самом деле не имеет много ярлыков для создания таких матриц, как matlab. Самое явное это просто придерживаться rbind
и cbind
, как вы уже сделали. Если это то, что вы делаете много, вы можете написать вспомогательную функцию, такую как
mat_shape <- function(expr) {
env<-new.env(parent=parent.frame())
env[[":"]] <- base::cbind
env[["/"]] <- base::rbind
eval(substitute(expr), envir = env)
}
, здесь мы повторно уточняем :
как cbind и /
как rbind для этой конкретной функции. , Тогда вы могли бы сделать
A <- matrix(1:6, ncol=3)
B <- matrix(1:4, ncol=2)
C <- matrix(1:3, ncol=1)
D <- matrix(1:12, ncol=4)
mat_shape(A:B/C:D)
# [,1] [,2] [,3] [,4] [,5]
# [1,] 1 3 5 1 3
# [2,] 2 4 6 2 4
# [3,] 1 1 4 7 10
# [4,] 2 2 5 8 11
# [5,] 3 3 6 9 12