Блочно-диагональное связывание матриц

Имеет ли R базовую функцию для связывания матриц в блочно-диагональной форме?

Следующее выполняет эту работу, но я хотел бы знать, есть ли стандартный способ:

a <- matrix(1:6, 2, 3) b <- matrix(7:10, 2, 2) rbind(cbind(a, matrix(0, nrow=nrow(a), ncol=ncol(b))), cbind(matrix(0, nrow=nrow(b), ncol=ncol(a)), b)) # [,1] [,2] [,3] [,4] [,5] #[1,] 1 3 5 0 0 #[2,] 2 4 6 0 0 #[3,] 0 0 0 7 9 #[4,] 0 0 0 8 10 

adiag из пакета magic делает то, что вы хотите:

 library(magic) adiag(a,b) [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 0 0 [2,] 2 4 6 0 0 [3,] 0 0 0 7 9 [4,] 0 0 0 8 10 

Кроме того, вы можете использовать пакет Matrix и функцию bdiag

 library(Matrix) bdiag(a,b) 4 x 5 sparse Matrix of class "dgCMatrix" [1,] 1 3 5 . . [2,] 2 4 6 . . [3,] . . . 7 9 [4,] . . . 8 10 

который возвращает разреженную матрицу и которая может быть более эффективной. Используйте as.matrix(bdiag(a,b)) чтобы получить обычный.

  • Передайте вектор имен переменных, чтобы упорядочить () в dplyr
  • Выполнение dplyr mutate на подмножестве столбцов
  • Как избежать обратных косых черт в строке R
  • Подключитесь к Postgres через SSL, используя R
  • Создайте пустой файл data.frame
  • подавлять НС в пасте ()
  • применить функцию по группам столбцов
  • Как добавить строки в кадр данных R
  • Как отделить знаки доллара ($) от данных / исключить специальные символы в R?
  • ggplot2 без осей, легенд и т. д.
  • R Заseleniumные сетки долготы - широта сетки на карте
  • Interesting Posts

    Android Полностью прозрачная панель состояния?

    Является ли SecureString когда-либо практичным в приложении C #?

    Открыть Sublime Text 2 с новой вкладкой вместо нового окна

    Функция таймера для обеспечения времени в наносекундах с использованием C ++

    Абстрактные функции в языке Swift

    Подключение двух сетей, двух интернет-провайдеров, двух маршрутизаторов и двух разных подсетей

    Как сохранить жесткое вращение / предотвратить spindown?

    Что мне нужно сделать, чтобы заставить Internet Explorer 8 принять самоподписанный сертификат?

    Запуск пользовательской задачи автоматически до / после стандартной задачи

    Fancybox не работает с jQuery v1.9.0

    Как заставить vim открывать сразу несколько файлов на вкладки

    Как вы обнаруживаете, где пересекаются два сегмента линии?

    В чем разница между Integer и int в Java?

    Разрешены ли повторяющиеся ключи в определении двоичных деревьев поиска?

    jQuery для сериализации только элементов в div

    Давайте будем гением компьютера.