изменить конкретный компонент списка в R - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь изменить определенный компонент L[[2]] в списке L в R. К сожалению, другой компонент L[[1]] в списке также изменяется.Ниже приведен минимальный рабочий пример:

 # initialize list L:
 L <- matrix(list( matrix(0,1,2) ), 2, 1)
 # show that L[[1]] = c(0,0):
 print(L[[1]][1,])
 #>[1] 0 0
 # only change L[[2]] into c(1,1):
 L[[2]][1,]   <- 1 
 # however L[[1]] has changed too to c(1,1):
 print(L[[1]][1,])
 #>[1] 1 1

(Может быть, это основной вопрос, так как я не эксперт в R).

В ответ на комментарий Акруна: изменение в L[[1]] происходит, когда я запускаю полный код за один раз в редакторе R-studio.Каким-то образом изменение в L[1] не происходит, когда я запускаю четыре команды в командной строке по одной за раз .Мне кажется очень странным.

1 Ответ

0 голосов
/ 31 декабря 2018

Есть несколько способов решения этой проблемы.Структура немного запутана, чтобы вносить изменения, как мы делаем в обычном list.Это list с атрибутами измерения, заданными matrix, и усложняется наличием list из matric es

1) Объект list создается вmatrix и list из matrices.Таким образом, мы могли бы присвоить значения, основанные сначала на подмножестве элементов matrix, а затем извлечь компонент list, чтобы присвоить его 1

L[2][[1]][] <- 1
print(L[[1]][1,])
#[1] 0 0

2) Другой вариантсоздать временный объект list и присвоить значения для list, позже обновить matrix/list с измененным list

l1 <- lapply(L, I) # I stands for identity.
l1[[2]][] <- 1
L[] <- l1
print(L[[1]][1,])
#[1] 0 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...