102 votes

Convertir deux colonnes d'un data frame en un vecteur nommé

J'ai besoin de convertir un data.frame à deux colonnes et plusieurs lignes en un vecteur de caractères nommé. Mon data.frame ressemblerait à ceci :

dd = data.frame(crit = c("a","b","c","d"), 
                name = c("Alpha", "Beta", "Caesar", "Doris")
                )

et ce que j'ai réellement besoin serait :

whatiwant = c("a" = "Alpha",
              "b" = "Beta",
              "c" = "Caesar",
              "d" = "Doris")

3voto

merv Points 14713

Il existe également une solution magrittr à cela via le pipe exposition (%$%):

library(magrittr)

dd %$% set_names(as.character(name), crit)

L'avantage mineur par rapport à tibble::deframe est que l'on n'est pas obligé d'avoir exactement un frame/tibble à deux colonnes comme argument (c'est-à-dire, éviter un select(value_col, name_col) %>%).

Remarquez que magrittr::set_names par rapport à base::setNames est interchangeable. Je préfère simplement le premier car il correspond à "set_(col|row)?names".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X