2012-11-07 43 views
5

đây là list1, chỉ kéo elements-- "name 'và' age" trong đó, có hai giá trị trong mọi phần tử, bây giờ tôi muốn thêm giá trị mới trong mỗi phần tử,Để thêm giá trị mới vào mọi phần tử trong danh sách trong 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 

là có nhiều cách đơn giản để làm gì?

Trả lời

3

Giải pháp này làm việc cho các danh sách của bất kỳ chiều dài:

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

Nó phụ thuộc một chút vào những gì bạn muốn làm. Nếu bạn muốn thêm một giá trị khác nhau cho mỗi phần tử trong danh sách này, tôi nghĩ rằng cách dễ nhất là:

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

Nếu mỗi vector trong danh sách của bạn có cùng độ dài, sau đó có một số phím tắt mà bạn có thể sử dụng quá. Nếu bạn muốn thêm giá trị như nhau cho tất cả các phần tử trong danh sách:

list1 <- lapply(list1, function(x) append(x, "NewEl")) 
Các vấn đề liên quan