从 R 中的列表元素创建 tibble



所以我有这个列表列表,在每个列表中,我都有元素,这些元素是等长的向量,并且在一个元素中只有一个值。我想创建一个向量的 tibble,并将 tibble 存储在列表列表中。

> neighbours
$p1
$p1$course_names
[1] "X1"  "X2"  "X3"
$p1$course_capacities
[1] 1 1 1 
$p1[[2]]
[1] 4.123106
$p2
$p2$course_names
[1] "X1"  "X2"  "X3"
$p2$course_capacities
[1] 1 1 1 
$p2[[2]]
[1] 4.123106

最终输出应如下所示:

> neighbours
[[1]]
[[1]][[1]]
# A tibble: 10 x 4
course_names course_capacities
<chr>                    <dbl>
1 X1                        1.00
2 X2                        1.00
3 X3                        1.00
[[1]][[2]]
[1] 4.123106
[[2]]
[[1]][[1]]
# A tibble: 10 x 4
course_names course_capacities
<chr>                    <dbl>
1 X1                        1.00
2 X2                        1.00
3 X3                        1.00
[[2]][[2]]
[1] 4.123106

我想我更喜欢一个整洁的解决方案,因为我正在寻找 tibbles。当然,我很乐意考虑任何方法。

它不是一个很好的结构,但有两种方法。首先,我尝试重新创建您的初始列表:

neighbours <- list(p1 = list(
list(course_names = c("X1","X2","X3"),
course_capabilities = c(1,1,1)),
4.123106
),
p2 = list(
list(course_names = c("X1","X2","X3"),
course_capabilities = c(1,1,1)),
4.123106
)
)

然后使用 lapply(( 或 purrr::map((

neighbours %>% purrr::map(~list(as_tibble(.[[1]]),.[[2]]))

lapply(neighbours, function(p){
list(as_tibble(p[[1]]), 
p[[2]])
})

最新更新