组合具有不同尺寸的字符向量的列表转换成一个单一的数据帧

时间:2019-02-02 20:03:21

标签: r dataframe

我想字符向量的列表合并成单个数据帧。例如,我想要

list(A=c("123","456"), B=c("789"), C=c("000"))

成为:

  label val
1     A 123
2     A 456
3     B 789
4     C 000

我想出了以下几点。它可以工作,但看起来笨拙。有没有更优雅的方式做上述?

l <- list(A=c("123","456"), B=c("789"), C=c("000"))
res <- lapply(names(l), function(x) { 
    data.frame(label=rep(x, length(l[[x]])), val=l[[x]], 
        stringsAsFactors = F) })
do.call("rbind", res)

2 个答案:

答案 0 :(得分:2)

library(tidyverse)

test <- list(A=c("123","456"), B=c("789"), C=c("000"))
enframe(test, "label", "val") %>% unnest

答案 1 :(得分:2)

可以使用良好的老式基础R

const randomLastPrice = (a, b) => { 
  console.log('not called until now', a, b); return /* value */ 
};

const mockTicker = {
        APPL() {
          return {
             symbol: 'APPLE',
             last: randomLastPrice(471.47, 817.63)
          }
        }
      }