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

Имеет ли 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)) чтобы получить обычный.

  • Точка, обрезанная по оси x в ggplot
  • Использование get () с функциями замены
  • Подстрочные буквы в метке оси ggplot
  • Принять HTTP-запрос в R-приложении
  • Почему суммировать или мутировать не работать с group_by при загрузке `plyr` после` dplyr`?
  • geom_tile и facet_grid / facet_wrap для одинаковой высоты плитки
  • Удалить дубликаты, сохраняющие запись с наибольшей абсолютной величиной
  • Отображение строки в формуле, а не переменной в lm fit
  • Есть ли способ использовать два оператора «...» в функции из R?
  • Перекодировать категориальный фактор с N категориями в N двоичных столбцов
  • Преобразование столбцов с несколькими значениями в широкий формат
  • Interesting Posts

    Установка слишком большого числа приложений в Windows. Это возможно?

    В чем разница между свойствами Dependency SetValue () и SetCurrentValue ()

    Подключение к mssql с помощью pdo через php и linux

    Загрузка файла с использованием MVC 4 с Ajax

    Может ли gigabit ethernet Auto-negotiation обнаружить кабель Cat5 и автоматически понизить режим?

    Как сравнить 2 таблицы данных

    Как обновить данные адаптера RecyclerView?

    Изменение ориентации экрана программно с помощью кнопки

    Есть ли способ сделать частичную загрузку AngularJS вначале, а не в случае необходимости?

    Использование iteratorа для разделения массива на части с неравным размером

    Как переназначить Shift + Del на Windows означает «Удалить вместо вырезания»?

    Как я могу получить высоту и ширину панели навигации Android программно?

    Преобразовать десятичную дробную часть в Objective-C?

    Можно ли запустить систему с блоком питания, который простаивает всего на 10% от его емкости?

    что такое Ljava.lang.String; @

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