2012-11-07 12 views
5

tutaj jest list1 tylko tow elements-- „name«i»age” w nim, są dwie wartości w każdym elemencie, teraz chcę dodać nową wartość w każdym elemencie,Aby dodać nową wartość do każdego elementu na liście w R?

list1<-list(name=c("bob","john"),age=c(15,17)) 
list1 
$name 
[1] "bob" "john" 

$age 
[1] 15 17 
list1[[1]][3]<-"herry" 
list1[[2]][3]<-17 
list1 
$name 
[1] "bob" "john" "herry" 

$age 
[1] 15 17 17 

jest tam więcej prosty sposób zrobić?

Odpowiedz

3

To rozwiązanie działa na listach dowolnej długości:

values <- list("herry", 17) # a list of the new values 
list1 <- mapply(append, list1, values, SIMPLIFY = FALSE) 


# $name 
# [1] "bob" "john" "herry" 

# $age 
# [1] 15 17 17 
0

To zależy od tego, co chcesz zrobić. Jeśli chcesz dodać inną wartość dla każdego elementu na liście, myślę, że najłatwiej jest:

Vec <- c("herry",17,...) 
i=0 
list1 <- lapply(list1, function(x) {i=i+1 ; append(x,Vec[i])}) 

jeśli każdy wektor w swojej liście ma taką samą długość, to nie pewne skróty można użyć też. Jeśli chcesz dodać taką samą wartość dla każdego elementu w liście:

list1 <- lapply(list1, function(x) append(x, "NewEl")) 
Powiązane problemy