2 votes

R combiner les éléments de la liste

J'ai un R liste comme suit

mlist <- list(name = c('id','value'), type = c('bigint','float'))

Je veux les combiner de manière à obtenir la chaîne suivante

id bigint,value float

J'ai cherché mais je n'ai pas trouvé de moyen de le faire. Quelqu'un peut-il m'indiquer comment faire sans boucler les lignes ? Je voudrais pouvoir utiliser quelque chose comme apply fonction

2voto

avid_useR Points 11344

Avec purrr nous pouvons aussi le faire :

library(purrr)

toString(pmap(mlist, paste))
# [1] "id bigint, value float"

Une autre approche de Base R :

toString(Reduce(function(x1, x2){
  mapply(function(x2, y2){
    paste(x2, y2, collapse = " ")
  }, x1, x2)
}, mlist))
# [1] "id bigint, value float"

1voto

akrun Points 148302

Nous pouvons utiliser Map

do.call(Map, c(f = c, unname(mlist)))
#$id
#[1] "id"     "bigint"

#$value
#[1] "value" "float"

S'il doit s'agir d'une seule chaîne, utilisez paste

do.call(Map, c(f = paste, unname(mlist)))

Si nous avons besoin d'obtenir un vecteur en sortie, utilisez unlist

unlist(do.call(Map, c(f = paste, sep="_", unname(mlist))), use.names = FALSE)
#[1] "id_bigint"   "value_float"

Ou dans tidyverse

library(purrr)
transpose(mlist) %>% 
     map(flatten_chr)
#[[1]]
#[1] "id"     "bigint"

#[[2]]
#[1] "value" "float"

0voto

Telaroz Points 153

Similaire à @avid_useR

bibliothèque(purrr)

pmap_chr(mlist, paste)

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