在简单的情况下,将偶数列表转换为数据框可以通过as.data.frame(). 例如 :
> (x1 <- list(a = 1:3, b = 4:6, c = 7:9))
> as.data.frame(x1)
# a b c
# 1 1 4 7
# 2 2 5 8
# 3 3 6 9
Run Code Online (Sandbox Code Playgroud)
但是,如果列表中组件的长度不相等,则as.data.frame()不起作用。
> (x2 <- list(a = 1:4, b = 5:6, c = 7:11, d = 12:14))
# $a
# [1] 1 2 3 4
# $b
# [1] 5 6
# $c
# [1] 7 8 9 10 11
# $d
# [1] 12 13 14
> as.data.frame(x2) # get an error
Run Code Online (Sandbox Code Playgroud)
我想实现两个目标。一种是:
# a b c d
# 1 1 5 7 12
# 2 2 6 8 13
# 3 3 NA 9 14
# 4 4 NA 10 NA
# 5 NA NA 11 NA
Run Code Online (Sandbox Code Playgroud)
另一个是:
# V1 V2 V3 V4 V5
# a 1 2 3 4 NA
# b 5 6 NA NA NA
# c 7 8 9 10 11
# d 12 13 14 NA NA
Run Code Online (Sandbox Code Playgroud)
我知道有一些函数或基本方法特别适用于这两种情况。请给我一点帮助。
使用tidyverse.
library(tidyverse)
x3 <- map_dfr(x2, ~as_data_frame(t(.)))
x3
# # A tibble: 4 x 5
# V1 V2 V3 V4 V5
# <int> <int> <int> <int> <int>
# 1 1 2 3 4 NA
# 2 5 6 NA NA NA
# 3 7 8 9 10 11
# 4 12 13 14 NA NA
x4 <- as_data_frame(t(x3))
x4
# # A tibble: 5 x 4
# V1 V2 V3 V4
# <int> <int> <int> <int>
# 1 1 5 7 12
# 2 2 6 8 13
# 3 3 NA 9 14
# 4 4 NA 10 NA
# 5 NA NA 11 NA
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2644 次 |
| 最近记录: |