首页 > 解决方案 > 如何将带有列表列的小标题转换为数据框列表

问题描述

我有一个tibble看起来像这样的(我们称之为param_table):

+--------+------------------+
| name   | param            |
+--------+------------------+
| apple  | <named list [2]> |
+--------+------------------+
| orange | <named list [2]> |
+--------+------------------+
| pear   | <named list [2]> |
+--------+------------------+
| banana | <named list [2]> |
+--------+------------------+
$result

+-----+-------+-------+
|     | alpha | beta  |
+-----+-------+-------+
| 1   | 0.1   | 1.1   |
+-----+-------+-------+
| 2   | 0.2   | 1.2   |
+-----+-------+-------+
| 3   | 0.3   | 1.3   |
+-----+-------+-------+
| 4   | 0.4   | 1.4   |
+-----+-------+-------+
| 5   | 0.5   | 1.5   |
+-----+-------+-------+
| ... | ...   | ...   |
+-----+-------+-------+

(There are in total 10,000 rows, skipping the rest here) 

$error
NULL 
+--------+-----------------------+
| name   | param                 |
+--------+-----------------------+
| apple  | <df[,2] [10,000 × 2]> |
+--------+-----------------------+
| orange | <df[,2] [10,000 × 2]> |
+--------+-----------------------+
| pear   | <df[,2] [10,000 × 2]> |
+--------+-----------------------+
| banana | <df[,2] [10,000 × 2]> |
+--------+-----------------------+
+-----+-------+-------+
|     | alpha | beta  |
+-----+-------+-------+
| 1   | 0.1   | 1.1   |
+-----+-------+-------+
| 2   | 0.2   | 1.2   |
+-----+-------+-------+
| 3   | 0.3   | 1.3   |
+-----+-------+-------+
| 4   | 0.4   | 1.4   |
+-----+-------+-------+
| 5   | 0.5   | 1.5   |
+-----+-------+-------+
| ... | ...   | ...   |
+-----+-------+-------+

我应该编写一个函数来进行这种转换吗?就像是:

for (i in names){
  as.data.frame(param_table1[[as.numeric(which(names == i))]])
}

非常感谢您的帮助!

标签: rlistpurrrtibble

解决方案


您可以使用map提取所需的组件:

param_table %>% 
 mutate(param = map(param, ~.x$result))

推荐阅读