r - 将列表列拆分为每列一个条目
问题描述
我想将列表列元素拆分为单独的列。
例如,在星球大战数据集中,
data("starwars")
我想要这个列表列(第 7 行中的条目)
c("Attack of the Clones", "Revenge of the Sith", "A New Hope")
用电影的值分成 A、B、C 列...
A B C D ...
Attack of the Clones Revenge of the Sith A New Hope NA ...
我有一种方法可以做到这一点
starwars %>% separate(films, into= letters[1:7],sep = ",")
这将导致输出
A B C D ...
c("Attack of the Clones" "Revenge of the Sith" "A New Hope") NA ...
但这需要一些额外的擦洗,我不认为这是普遍的。有没有办法一口气做到这一点?
解决方案
“电影”列是list
s的一个vector
。如果我们想创建data.frame
7 列,即“电影”的max
最大数并将其存储为 ,则将整个列的最大长度分配给length
list
length
data.frame
library(tidyverse)
mx <- max(lengths(starwars$films))
starwars %>%
mutate(films = map(films, ~ `length<-`(.x, mx) %>%
as.data.frame.list %>%
set_names(LETTERS[seq_len(mx)]))) %>%
unnest(films)
或者另一个选项是pull
'films' 列,将其转换为tibble
n 内map
,与除 'films' 之外的 'starwars' 列绑定
starwars %>%
pull(films) %>%
map_df(~ t(.x) %>%
as_tibble) %>%
bind_cols(starwars %>%
select(-films), .)
推荐阅读
- ethereum - Solidity 混音中未声明的标识符?
- windows - 使用 Clang 构建 Boost“无法构建 Boost.build 引擎”
- bash - Bash 变量参数扩展完整文档
- python - 通过将所有元素都放在右列中,将数组打印为矩阵
- python - Discord py 同时有多个tasks.loop?
- c# - 为什么我的整数分配无效?
- node.js - create-react-app 无限期暂停,而不是创建一个反应应用程序
- c++ - 在 C++ 中返回输入
- c# - VS 2019 无法调试 Azure 功能
- ios - 将模型移动到框架时出现 NSKeyedUnarchiver 问题