2016-08-18 4 views
-1

Я пытаюсь изменить именованный элемент в списке списков вроде так:Перебор и модифицирующие элементы списка

A <- list(list(a=1,b=1),list(a=2,b=2)) 
A[[1]]$a == 1 

Try модифицировать элементы:

for(e in A) e$a <- 10 

Почему это до сих пор держат правда?

A[[1]]$a == 1 

И не так:

A[[1]]$a == 10 

Кроме того, что бы предложенный подход на самом деле присвоить 10 каждому элементу .$a?

+3

У вас есть «а» элемент, как 1, а не как 10. 'для (е в А)' не является правильным – akrun

+4

Может ' for (e in 1: length (A)) {A [[e]] $ a <- 10} '? –

+1

Или вы можете произвести впечатление на своих друзей и делать 'lapply (A," [[<- "," a ", 10)' –

ответ

5

Ваш код не работает так, как вы думаете. В этом случае:

for (e in A) { 
    e$a <- 10 
} 

Это не работает, потому что временная переменная e является новым, независимым объектом, не является ссылкой на соответствующий элемент в A.

Быстрый способ добиться того, чего вы хотите, будет:

for (i in 1:length(A)) { 
    A[[i]]$a <- 10 
} 
+0

Я пошел с seq_along – mgcdanny

Смежные вопросы