以编程方式使用字符向量中的标记创建列表

时间:2013-06-18 12:57:17

标签: r

我可能会反击桌面,因为它显而易见,但是如何从字符向量以编程方式创建列表,以便字符向量提供标记,而另一个向量提供值。 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)

4 个答案:

答案 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)