Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用character vector中的标记以编程方式创建列表_R - Fatal编程技术网

使用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)