Je vais probablement me frapper la tête contre la table parce que c'est évident mais comment créez-vous une liste de manière programmative à partir d'un vecteur de caractère tel que le vecteur de caractère fournit les balises et un vecteur noteuse les valeurs. 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 Réponses :
Vous pouvez définir:
> as.list(values.vector) $first.element [1] 1 $second.element [1] 2
character.vector <- c('first.element', 'second.element') values.vector <- c(1, 2) as.list(setNames(values.vector, character.vector))
joli! exactement ce dont j'avais besoin. N'a pas connu la fonction de consolidation et l'utilisera de manière approfondie! :-RÉ
Les autres réponses couvraient mieux, mais juste pour être complétude, une autre façon de construire l'expression que vous souhaitez évaluer à l'aide de parse code> et d'utiliser
eval code> pour l'évaluer. ...
# 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
Surpris de ce que la structure de noone a mentionné code>: