матрица в R является только вектор с атрибутом с указанием размеров. Когда вы соедините их вместе, вы просто теряете атрибут измерения.
Так,
matrix(paste(mat,mat,sep=","),2,2)
Или, например,
mat1 <- paste(mat,mat,sep=",")
> mat1
[1] "1,1" "2,2" "3,3" "4,4"
> dim(mat1) <- c(2,2)
> mat1
[,1] [,2]
[1,] "1,1" "3,3"
[2,] "2,2" "4,4"
Вот только один пример того, как вы могли бы написать простую функцию, чтобы сделать это:
paste_matrix <- function(...,sep = " ",collapse = NULL){
n <- max(sapply(list(...),nrow))
p <- max(sapply(list(...),ncol))
matrix(paste(...,sep = sep,collapse = collapse),n,p)
}
... но конкретная функция, которую вы хотите, будет зависеть от того, как вы хотите, чтобы справиться с более две матрицы, матрицы разных размеров или, возможно, входы, которые совершенно неприемлемы (случайные объекты, NULL
и т. д.).
Эта конкретная функция перерабатывает вектор и выводит матрицу с размером, соответствующим наибольшему из различных входов.
Да, я понимаю. Но хотелось бы знать, есть ли функция в R для вставки ячеек вместе, не теряя атрибут измерения. Как мы можем добавить матрицы и вычесть, не теряя атрибут размерности. – anonR
@anonR Ну, мой ответ показывает, как вы напишете один, нет ...? (С некоторой проверкой на пригодность входов и размеров.) – joran
@anonR - вы можете сделать 'mat [] <- paste (mat, mat, sep =", ")', но это перезаписывает исходный 'mat' –