J'ai besoin de convertir un deux colonnes à plusieurs lignes data.frame
à un vecteur de caractères nommé. Ma data.frame
serait quelque chose comme:
dd = data.frame(crit = c("a","b","c","d"),
name = c("Alpha", "Beta", "Caesar", "Doris")
)
et ce dont j'ai réellement besoin serait:
whatiwant = c("a" = "Alpha",
"b" = "Beta",
"c" = "Caesar",
"d" = "Doris")
Utilisez la fonction names
:
whatyouwant <- as.character(dd$name)
names(whatyouwant) <- dd$crit
as.character
est nécessaire, car data.frame
et read.table
transforme les caractères en facteurs avec les paramètres par défaut.
Si vous voulez une doublure:
whatyouwant <- setNames(as.character(dd$name), dd$crit)
Vous pouvez créer un vecteur à partir de dd$name
Et ajouter des noms à l'aide de names()
, mais vous pouvez tout faire en une seule étape avec structure()
:
whatiwant <- structure(as.character(dd$name), names = as.character(dd$crit))
Pour plus de variété, essayez split
et unlist
:
unlist(split(as.character(dd$name), dd$crit))
# a b c d
# "Alpha" "Beta" "Caesar" "Doris"
Vous pouvez également l'utiliser pour cela.
tibble::deframe()