2012-11-07 17 views
5
यहाँ

list1 है, केवल टो elements-- "name" और "age" उस में, वहाँ हर तत्व में दो मान रहे हैं, अब मैं हर तत्व में नया मान जोड़ना चाहते हैं,आर में सूची में प्रत्येक तत्व में नया मूल्य जोड़ने के लिए?

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 

वहाँ अधिक है करने का आसान तरीका?

उत्तर

3

यह समाधान किसी भी लम्बाई की सूची के लिए काम करता है:

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

यह आप जो करना चाहते हैं उस पर थोड़ा सा निर्भर करता है। आप सूची में प्रत्येक तत्व के लिए एक अलग मूल्य जोड़ना चाहते हैं, तो मुझे लगता है कि सबसे आसान तरीका है: अपनी सूची में हर वेक्टर लम्बाई समान होती है

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

हैं, तो कुछ शॉर्टकट आप भी उपयोग कर सकते है। आप सूची में प्रत्येक तत्व को एक जैसा मान जोड़ना चाहते हैं:

list1 <- lapply(list1, function(x) append(x, "NewEl")) 
संबंधित मुद्दे