2012-05-16 30 views
12

tôi có một danh sách trong R:phụ thêm vào một danh sách với tên động, R

a <- list(n1 = "hi", n2 = "hello") 

Tôi muốn thêm vào danh sách tên này nhưng tên phải năng động. Đó là, họ đang tạo ra từ một chuỗi (ví dụ: paste("another","name",sep="_")

tôi đã cố gắng làm điều này mà không làm việc:

c(a, parse(text="paste(\"another\",\"name\",sep=\"_\")=\"hola\"") 

cách chính xác để làm điều này là gì Mục đích cuối cùng là chỉ để nối thêm vào danh sách này và chọn tên của tôi năng động.

Trả lời

19

Bạn chỉ có thể sử dụng lập chỉ mục với dấu ngoặc kép. Một trong những phương pháp sau đây nên làm việc.

a <- list(n1 = "hi", n2 = "hello") 
val <- "another name" 
a[[val]] <- "hola" 
a 
#$n1 
#[1] "hi" 
# 
#$n2 
#[1] "hello" 
# 
#$`another name` 
#[1] "hola" 

a[[paste("blah", "ok", sep = "_")]] <- "hey" 
a 
#$n1 
#[1] "hi" 
# 
#$n2 
#[1] "hello" 
# 
#$`another name` 
#[1] "hola" 
# 
#$blah_ok 
#[1] "hey" 
+0

cảm ơn bạn, rất ngắn và các giải pháp điểm – Alex

9

Bạn có thể sử dụng setNames để thiết lập tên khi đang bay:

a <- list(n1 = "hi", n2 = "hello") 
c(a,setNames(list("hola"),paste("another","name",sep="_"))) 

Kết quả:

$n1 
[1] "hi" 

$n2 
[1] "hello" 

$another_name 
[1] "hola" 
+0

cảm ơn bạn, điều này là rất tốt. điều cần biết về setNames. – Alex

Các vấn đề liên quan