gpt4 book ai didi

r - 将不均匀列表转换为 data.frame

转载 作者:行者123 更新时间:2023-12-03 22:12:04 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to convert a list consisting of vector of different lengths to a usable data frame in R?

(6 个回答)



Combining (cbind) vectors of different length

(5 个回答)


2年前关闭。




在简单的情况下,可以通过 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

但是,如果列表中组件的长度不相等,则 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

我想实现两个目标。一种是:
#    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

另一个是:
#   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

我知道有一些函数或基本方法特别适用于这两种情况。请给我一点帮助。

最佳答案

使用 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

关于r - 将不均匀列表转换为 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53684158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com