9
votes

Créer une liste par programme avec des balises du vecteur de caractère

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)

r

0 commentaires

4 Réponses :


6
votes

Vous pouvez définir:

> as.list(values.vector)
$first.element
[1] 1

$second.element
[1] 2


0 commentaires

16
votes
character.vector <- c('first.element', 'second.element')
values.vector <- c(1, 2)

as.list(setNames(values.vector, character.vector))

1 commentaires

joli! exactement ce dont j'avais besoin. N'a pas connu la fonction de consolidation et l'utilisera de manière approfondie! :-RÉ



5
votes

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


0 commentaires

5
votes

Surpris de ce que la structure de noone a mentionné : xxx


0 commentaires