【问题标题】:Create tibble from list elements in R从R中的列表元素创建tibble
【发布时间】:2018-08-25 22:06:13
【问题描述】:

所以我有这个列表列表,在每个列表中,我都有长度相等的向量和一个元素中的单个值的元素。我想创建向量的 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

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

【问题讨论】:

    标签: r tidyverse tibble


    【解决方案1】:

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

    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]])
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 2022-01-11
      • 2021-09-08
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多