gpt4 book ai didi

r - 将复杂的列表列表转换为数据框列表

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

我有一个由其他列表和数据框组成的复杂列表。我需要将此列表简化为仅由数据框组成 - 因此每个二级列表都应制成单独的一级数据框。

这是可重现的示例:

 dd<-data.frame(x=1:3,y=4:6)
l1<-list(dd,list(dd,dd))
#original list
l1
[[1]]
x y
1 1 4
2 2 5
3 3 6

[[2]]
[[2]][[1]]
x y
1 1 4
2 2 5
3 3 6

[[2]][[2]]
x y
1 1 4
2 2 5
3 3 6

结果我需要得到
 l2<-list(dd,dd,dd)
l2
[[1]]
x y
1 1 4
2 2 5
3 3 6

[[2]]
x y
1 1 4
2 2 5
3 3 6

[[3]]
x y
1 1 4
2 2 5
3 3 6

我尝试使用函数 unlist()和参数 recursive=FALSE但在这种情况下,第一级数据帧被转换为两个向量。
 unlist(l1,recursive=FALSE)
$x
[1] 1 2 3

$y
[1] 4 5 6

[[3]]
x y
1 1 4
2 2 5
3 3 6

[[4]]
x y
1 1 4
2 2 5
3 3 6

最佳答案

我能想到的一种方法是检查输入类(运行时 lapply )是否为 data.framelist ,如果是 data.frame将其转换为 data.frame 的列表.这将导致整个列表成为 data.frames 列表的列表。那么你可以使用unlistrecursive=FALSE如下:

unlist(lapply(l1, function(x) 
if (class(x) == "data.frame") list(x) else x), recursive=FALSE)
[[1]]
x y
1 1 4
2 2 5
3 3 6

[[2]]
x y
1 1 4
2 2 5
3 3 6

[[3]]
x y
1 1 4
2 2 5
3 3 6

当数据与您提到的完全相同时,这当然有效。它们是 data.frames 列表或 data.frames 列表列表。哦,欢迎来到 SO(第一个问题)! :)

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

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