我可能会反击桌面,因为它显而易见,但是如何从字符向量以编程方式创建列表,以便字符向量提供标记,而另一个向量提供值。 E.g。
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)
答案 0 :(得分:15)
character.vector <- c('first.element', 'second.element')
values.vector <- c(1, 2)
as.list(setNames(values.vector, character.vector))
答案 1 :(得分: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
答案 2 :(得分: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
答案 3 :(得分:5)
对于没人提及structure
感到惊讶:
structure(as.list(values.vector), names=character.vector)