Добавление элементов в списки с матрицами в качестве записей R - PullRequest
0 голосов
/ 28 января 2019

Когда я вывожу 'mat', он работает как положено, причем mat дает полный список матриц, а mat [1], mat [2] и mat [3] дают первый второй и третий элементы, а именно матрицы 4x4 свсе записи равны 1, 2 и 3 соответственно.

Однако, когда я пытаюсь добавить новый элемент или изменить существующий, я получаю ошибку, и вместо добавления матрицы 4x4 в список, это простодобавляет обычное число.

Как добавить новую матрицу в список?Я также открыт для использования альтернатив list ().Я относительно новичок в R, и я всегда использовал x = c (), но, похоже, это не работает и для матриц.Заранее спасибо.

Ввод:

mat = list( matrix (c(1), nrow = 4, ncol = 4, byrow = TRUE),
            matrix (c(2), nrow = 4, ncol = 4, byrow = TRUE),
            matrix (c(3), nrow = 4, ncol = 4, byrow = TRUE) )

mat

mat[2]

mat[1] = matrix(c(0), nrow = 4, ncol = 4, byrow = TRUE)

mat[4] = matrix(c(4), nrow = 4, ncol = 4, byrow = TRUE)

mat

Выход:

> mat = list( matrix (c(1), nrow = 4, ncol = 4, byrow = TRUE),
+             matrix (c(2), nrow = 4, ncol = 4, byrow = TRUE),
+             matrix (c(3), nrow = 4, ncol = 4, byrow = TRUE) )
> mat
[[1]]
     [,1] [,2] [,3] [,4]
[1,]    1    1    1    1
[2,]    1    1    1    1
[3,]    1    1    1    1
[4,]    1    1    1    1

[[2]]
     [,1] [,2] [,3] [,4]
[1,]    2    2    2    2
[2,]    2    2    2    2
[3,]    2    2    2    2
[4,]    2    2    2    2

[[3]]
     [,1] [,2] [,3] [,4]
[1,]    3    3    3    3
[2,]    3    3    3    3
[3,]    3    3    3    3
[4,]    3    3    3    3

> mat[2]
[[1]]
     [,1] [,2] [,3] [,4]
[1,]    2    2    2    2
[2,]    2    2    2    2
[3,]    2    2    2    2
[4,]    2    2    2    2

> mat[1] = matrix(c(0), nrow = 4, ncol = 4, byrow = TRUE)
Warning message:
In mat[1] = matrix(c(0), nrow = 4, ncol = 4, byrow = TRUE) :
  number of items to replace is not a multiple of replacement length
> mat[4] = matrix(c(4), nrow = 4, ncol = 4, byrow = TRUE)
Warning message:
In mat[4] = matrix(c(4), nrow = 4, ncol = 4, byrow = TRUE) :
  number of items to replace is not a multiple of replacement length
> mat
[[1]]
[1] 0

[[2]]
     [,1] [,2] [,3] [,4]
[1,]    2    2    2    2
[2,]    2    2    2    2
[3,]    2    2    2    2
[4,]    2    2    2    2

[[3]]
     [,1] [,2] [,3] [,4]
[1,]    3    3    3    3
[2,]    3    3    3    3
[3,]    3    3    3    3
[4,]    3    3    3    3

[[4]]
[1] 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...