使用character vector中的标记以编程方式创建列表
我可能会把我的头撞到表上,因为这很明显,但是如何通过编程从字符向量创建一个列表,以便字符向量提供标记,而另一个向量提供值。例如使用character vector中的标记以编程方式创建列表,r,R,我可能会把我的头撞到表上,因为这很明显,但是如何通过编程从字符向量创建一个列表,以便字符向量提供标记,而另一个向量提供值。例如 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
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)
character.vector您可以设置:
> names(values.vector) <- character.vector
> values.vector
first.element second.element
1 2
character.vector其他答案涵盖得更好,但为了完整起见,另一种方法是使用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
#列表元素的标记和值
tag对没有人提到结构感到惊讶:
structure(as.list(values.vector), names=character.vector)
美好的正是我需要的。我不知道setNames函数,从现在起将广泛使用它!:-D
# 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
structure(as.list(values.vector), names=character.vector)