我有一个R
列表,如下所示
mlist <- list(name = c('id','value'), type = c('bigint','float'))
我想以一种可以以以下字符串结尾的方式组合它
id bigint,value float
我进行了搜索,但找不到解决方法。有人可以让我知道如何在不循环行的情况下做到这一点吗?我希望能够使用类似apply
函数的功能
答案 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,粘贴)