【问题标题】:R - convert named list of named vectors into dataframe where one vector is placed in one cellR - 将命名向量的命名列表转换为数据框,其中一个向量放置在一个单元格中
【发布时间】:2016-12-30 13:05:51
【问题描述】:

我有一个命名向量的命名列表:

my_list <- list('first'=c('foo_1'=7, 'bar_1'=3), 'second'=c('foo_2'=4, 'bar_2'=2, 'baz'=1))

我想将它转换成一个数据框,其中列表元素的名称应该是数据框索引,命名向量应该是数据框单元格值。类似这样的东西(或my_vectors 列中的任何类似内容):

                           my_vectors
first            'foo_1'=7, 'bar_1'=3
second  'foo_2'=4, 'bar_2'=2, 'baz'=1

我该怎么做?

谢谢!

【问题讨论】:

  • 试试stack(my_list)

标签: r list vector dataframe type-conversion


【解决方案1】:

我不知道你为什么要这样做,但如果你真的需要,这里有一种方法:

library(dplyr)
library(tidyr)

# convert lists to data frame
unlisted <- unlist(my_list) %>% data.frame

# majority of data transformation
unlisted <- mutate(unlisted, variable = rownames(unlisted), value = `.`) %>% 
    separate(variable, c('vector', 'item'), sep = '\\.') %>% 
    group_by(vector) %>% 
    summarize(my_vectors = paste(sprintf('%s = %i', item, value), collapse = ', ')) %>% 
    data.frame

# remove superfluous "vector" column and move those values to row indices
rownames(unlisted) <- unlisted$vector
unlisted$vector <- NULL

结果:

                          my_vectors
first           foo_1 = 7, bar_1 = 3
second foo_2 = 4, bar_2 = 2, baz = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 2013-08-03
    • 2018-03-25
    • 2016-08-29
    • 1970-01-01
    相关资源
    最近更新 更多