r - 将列表转换为数据框

标签 r list

我正在尝试将以下列表转换为数据框。

我尝试过 melt/cast、ldply、unlist 等,但似乎无法获得预期的输出。

非常感谢!

df <- list(
  name=rep(c(11,12), each=1),
  value=rnorm(2),
  name=rep(c(13,14), each=1),
  value=rnorm(2)
  )
df

我想在数据框中输出以下内容:

name  value
11    1.187
12    0.691
13    0.452
14    0.898

最佳答案

一个选项是堆叠成一个两列的data.frame,然后展开它回到“宽”格式

library(tidyverse)
enframe(df) %>%
   unnest(value) %>% 
   group_by(name) %>% 
   mutate(rn = row_number()) %>% 
   spread(name, value) %>%
   select(-rn)
# A tibble: 4 x 2
#  name   value
#  <dbl>   <dbl>
#1    11 -0.484 
#2    12 -0.110 
#3    13 -0.328 
#4    14  0.0737

或者另一种选择是使用 tidyr 的开发版本中的 pivot_longer

df %>% 
  set_names(str_c(names(.), "_", cumsum(names(.) == "name"))) %>% 
  as_tibble %>% 
  mutate(rn = row_number()) %>%
  pivot_longer(-rn, names_to =c(".value", "group"), names_sep = '_') %>% 
  select(name, value)

或者使用base R

reshape(transform(stack(df), rn = ave(seq_along(ind), ind,
    FUN = seq_along)), idvar = 'rn', direction = 'wide', timevar = 'ind')

关于r - 将列表转换为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57811760/

相关文章:

R:计数 15 分钟的时间间隔

R:使用 for 循环遍历 data.table 中的变量名称(并按变量对它们进行分组)

C# List<> GroupBy 2 个值

c# - 在 C# 中编辑列表 <double[]> 的问题

c# - 使用MVVM将List <Object>设置为模型

python - 检查列表中是否存在值的最快方法

list - 2个列表的交集和并集

r - 发散图的 x 轴起始值

r - 有效地将源代码从多个文件合并到单个文件,包括 (Roxygen) 注释

r - 为什么 geom_text() 多次绘制文本?