R合并列表项

时间:2019-07-12 19:12:45

标签: r list

我有一个R列表,如下所示

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

我想以一种可以以以下字符串结尾的方式组合它

id bigint,value float

我进行了搜索,但找不到解决方法。有人可以让我知道如何在不循环行的情况下做到这一点吗?我希望能够使用类似apply函数的功能

3 个答案:

答案 0 :(得分:2)

使用purrr,我们还可以执行以下操作:

library(purrr)

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

另一种基本R方法:

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

答案 1 :(得分:1)

我们可以使用Map

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

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

如果需要为单个字符串,请使用paste

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

如果需要获取矢量作为输出,请使用unlist

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

或者在tidyverse

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

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

答案 2 :(得分:0)

类似于@avid_useR

图书馆(purrr)

pmap_chr(mlist,粘贴)