2013-06-18 55 views
8

Tôi có thể sẽ gõ đầu vào bảng vì nó hiển nhiên nhưng làm thế nào để bạn tạo một danh sách lập trình từ một vector ký tự sao cho vector ký tự cung cấp các thẻ và một véc tơ khác giá trị. Ví dụ.Tạo danh sách theo lập trình với các thẻ từ ký tự vector

character.vector <- c('first.element', 'second.element') 
values.vector <- c(1, 2) 
a.list <- list(//magic here//) 
print(a.list) // prints the same as list(first.element=1, second.element=2) 

Trả lời

13
character.vector <- c('first.element', 'second.element') 
values.vector <- c(1, 2) 

as.list(setNames(values.vector, character.vector)) 
+1

tốt đẹp! chính xác những gì tôi cần. Không biết hàm setNames và sẽ sử dụng nó từ bây giờ! :-D – joidegn

6

Bạn có thể thiết lập:

> names(values.vector) <- character.vector 
    > values.vector 
    first.element second.element 
       1    2 

và, tất nhiên, chuyển đổi nó thành một danh sách nếu cần thiết:

> as.list(values.vector) 
$first.element 
[1] 1 

$second.element 
[1] 2 
5

Những câu trả lời khác bao phủ nó tốt hơn, nhưng chỉ để hoàn thành, một cách khác là xây dựng biểu thức bạn muốn đánh giá bằng cách sử dụng parse và sử dụng.210 để đánh giá nó ....

# tag and values for list elements 
tag <- c('first.element', 'second.element') 
val <- c(1, 2) 


content <- paste(tag , "=" , val , collapse = " , ") 
content 
# [1] "first.element = 1,second.element = 2" 

eval(parse(text = paste0("list(" , content , ")"))) 
# $first.element 
# [1] 1 
# 
# $second.element 
# [1] 2 
5

Ngạc nhiên mà không ai đề cập của structure:

structure(as.list(values.vector), names=character.vector) 
Các vấn đề liên quan