При замене с list(2)
, посмотрите на вывод:
a=matrix(list(),2,2)
a[1,2]=list(2) sapply(a, class)
# [1] "NULL" "NULL" "numeric" "NULL"
То есть, [1,2]
элемент неlist
.
list(2,3)
может быть принудительно применен к одному элементу; как указывает Ричард Скривен, замена должна быть длиной-1; следующие работы (немного глупо, я согласен):
a = matrix(list(), 2, 2)
a[1, 2] = list(list(2, 3))
a
# [,1] [,2]
# [1,] NULL List,2
# [2,] NULL NULL
(только для справки, я понял это, играя с dput
, как так :)
#What happens if we declare 'a' as a
# matrix of appropriately-sized lists to start with?
a <- matrix(replicate(4, vector("list", 2), simplify = FALSE), 2, 2)
a
# [,1] [,2]
# [1,] List,2 List,2
# [2,] List,2 List,2
#
# can we replace now?
a[1,2] <- list(2,3)
# (same error; what IS 'a[1,2]' for this matrix?)
dput(a[1, 2])
# list(list(NULL, NULL))
# BINGO! we must replace 'a[1,2]' with a length-one list.
что вы пытаетесь достичь – MichaelChirico
Я считаю, что один матричный элемент может быть длиной 1. –
У меня есть набор данных, который я хочу поместить в двумерную матрицу. Некоторые (многие) элементы матрицы будут иметь несколько записей из набора данных, некоторые элементы матрицы не будут иметь элементов, поэтому я подумал, что будет работать 2-мерная матрица списков. – user3718600