9

我可能会把我的头撞到桌子上,因为它很明显,但是你如何以编程方式从字符向量创建一个列表,以便字符向量提供标签,另一个向量提供值。例如

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)
4

4 回答 4

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

as.list(setNames(values.vector, character.vector))
于 2013-06-18T13:00:36.137 回答
6

你可以设置:

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

当然,如有必要,将其转换为列表:

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

$second.element
[1] 2
于 2013-06-18T13:00:03.277 回答
5

很惊讶没有人提到structure

structure(as.list(values.vector), names=character.vector)
于 2013-06-18T14:26:01.437 回答
5

其他答案更好地涵盖了它,但只是为了完整起见,另一种方法是构建您想要评估的表达式parse并使用eval它来评估它......

# 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
于 2013-06-18T13:10:10.180 回答