【问题标题】:Flatten nested dataframe of tibbles with missing data展平缺少数据的小标题的嵌套数据框
【发布时间】:2021-12-15 20:43:57
【问题描述】:

我有一个嵌套的 tibbles 数据框,其结构如下:

df <- structure(list(V1 = list(structure(list(var1 = c("tst", "tst"
), var2 = c(1L, 1L), var3 = c(9L, 9L), var4 = c(1L, 1L), var5 = 1:2, 
    var6 = c("Don’t shortchange public trust in science", NA), 
    var7 = c("11 September 2020", NA), var8 = c("Editorial", 
    NA)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", 
"data.frame")), structure(list(var1 = c("tst", "tst"), var2 = c(1L, 
1L), var3 = c(9L, 9L), var4 = c(2L, 2L), var5 = 1:2, var6 = c("Tailoring immunotherapy with liquid biopsy", 
"Pseudovirus for immunotherapy"), var7 = c("18 September 2020", 
"10 August 2020"), var8 = c("News & Views", "News & Views")), row.names = c(NA, 
-2L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
    var1 = c("tst", "tst"), var2 = c(2L, 2L), var3 = c(9L, 9L
    ), var4 = c(1L, 1L), var5 = 1:2, var6 = c("Before clicking the ‘submit’ button", 
    NA), var7 = c("23 September 2021", NA), var8 = c("Editorial", 
    NA)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", 
"data.frame")), structure(list(var1 = c("tst", "tst"), var2 = c(2L, 
2L), var3 = c(9L, 9L), var4 = c(2L, 2L), var5 = 1:2, var6 = c("Immunoradiotherapy goes club(bing)", 
"Splitting signals drives CARs further"), var7 = c("20 September 2021", 
"23 September 2021"), var8 = c("News & Views", "News & Views"
)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
))), V2 = list(structure(list(var1 = c("tst", "tst"), var2 = c(1L, 
1L), var3 = c(10L, 10L), var4 = c(1L, 1L), var5 = 1:2, var6 = c("What next for postdocs?", 
NA), var7 = c("09 October 2020", NA), var8 = c("Editorial", NA
)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
)), structure(list(var1 = c("tst", "tst"), var2 = c(1L, 1L), 
    var3 = c(10L, 10L), var4 = c(2L, 2L), var5 = 1:2, var6 = c("Optimizing CARs for ocular delivery", 
    "mtDNA mutations help support cancer cells"), var7 = c("12 October 2020", 
    "19 October 2020"), var8 = c("News & Views", "News & Views"
    )), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
)), structure(list(var1 = c("tst", "tst"), var2 = c(2L, 2L), 
    var3 = c(10L, 10L), var4 = c(1L, 1L), var5 = 1:2, var6 = c("The labors of referees", 
    NA), var7 = c("22 October 2021", NA), var8 = c("Editorial", 
    NA)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", 
"data.frame")), structure(list(var1 = c("tst", "tst"), var2 = c(2L, 
2L), var3 = c(10L, 10L), var4 = c(2L, 2L), var5 = 1:2, var6 = c("A PRC1–RNF2 knockout punch for cancer", 
"A quick guide for clinical oncology"), var7 = c("22 October 2021", 
"22 October 2021"), var8 = c("News & Views", "News & Views")), row.names = c(NA, 
-2L), class = c("tbl_df", "tbl", "data.frame"))), V3 = list(structure(list(
    var1 = c("tst", "tst"), var2 = c(1L, 1L), var3 = c(11L, 11L
    ), var4 = c(1L, 1L), var5 = 1:2, var6 = c("Rise of the preprints", 
    NA), var7 = c("17 November 2020", NA), var8 = c("Editorial", 
    NA)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", 
"data.frame")), structure(list(var1 = c("tst", "tst"), var2 = c(1L, 
1L), var3 = c(11L, 11L), var4 = c(2L, 2L), var5 = 1:2, var6 = c("Future directions in preclinical and translational cancer neuroscience research", 
NA), var7 = c("17 November 2020", NA), var8 = c("Comment", NA
)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
)), structure(c(NA, NA), .Dim = 2:1, .Dimnames = list(c("result.1", 
"result.2"), NULL)), structure(c(NA, NA), .Dim = 2:1, .Dimnames = list(
    c("result.1", "result.2"), NULL))), V4 = list(structure(list(
    var1 = c("tst", "tst"), var2 = c(1L, 1L), var3 = c(12L, 12L
    ), var4 = c(1L, 1L), var5 = 1:2, var6 = c("Tackling the shadow pandemic", 
    NA), var7 = c("16 December 2020", NA), var8 = c("Editorial", 
    NA)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", 
"data.frame")), structure(list(var1 = c("tst", "tst"), var2 = c(1L, 
1L), var3 = c(12L, 12L), var4 = c(2L, 2L), var5 = 1:2, var6 = c("Mutagenic exposures shape immunotherapy responses", 
"How to kill Treg cells for immunotherapy"), var7 = c("16 December 2020", 
"16 December 2020"), var8 = c("News & Views", "News & Views")), row.names = c(NA, 
-2L), class = c("tbl_df", "tbl", "data.frame")), structure(c(NA, 
NA), .Dim = 2:1, .Dimnames = list(c("result.1", "result.2"), 
    NULL)), structure(c(NA, NA), .Dim = 2:1, .Dimnames = list(
    c("result.1", "result.2"), NULL))), V5 = list(structure(c(NA, 
NA), .Dim = 2:1, .Dimnames = list(c("result.1", "result.2"), 
    NULL)), structure(c(NA, NA), .Dim = 2:1, .Dimnames = list(
    c("result.1", "result.2"), NULL)), structure(c(NA, NA), .Dim = 2:1, .Dimnames = list(
    c("result.1", "result.2"), NULL)), structure(c(NA, NA), .Dim = 2:1, .Dimnames = list(
    c("result.1", "result.2"), NULL)))), row.names = c(NA, -4L
), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x0000015e6de41ef0>)

对于标题的前两列,我可以使用bind_rows 并获得所需的输出:

bind_rows(bind_rows(df$V1),bind_rows(df$V2))

当我尝试绑定缺少信息的其他行时,bind_rows 出现错误:

bind_rows(bind_rows(df$V1),bind_rows(df$V2),bind_rows(df$V3))

错误:参数 3 必须有名称。

我能够使用this example 做到这一点。我正在考虑尝试使用this example 中的map 函数,但我无法让它工作。

编辑:更新错误代码

【问题讨论】:

    标签: r dplyr nested-lists


    【解决方案1】:

    似乎对我有用:

    > z1 <- bind_rows(bind_rows(df$V1),bind_rows(df$V2),bind_rows(df$V2))
    > str(z1)
    tibble [24 x 8] (S3: tbl_df/tbl/data.frame)
     $ var1: chr [1:24] "tst" "tst" "tst" "tst" ...
     $ var2: int [1:24] 1 1 1 1 2 2 2 2 1 1 ...
     $ var3: int [1:24] 9 9 9 9 9 9 9 9 10 10 ...
     $ var4: int [1:24] 1 1 2 2 1 1 2 2 1 1 ...
     $ var5: int [1:24] 1 2 1 2 1 2 1 2 1 2 ...
     $ var6: chr [1:24] "Don’t shortchange public trust in science" NA "Tailoring immunotherapy with liquid biopsy" "Pseudovirus for immunotherapy" ...
     $ var7: chr [1:24] "11 September 2020" NA "18 September 2020" "10 August 2020" ...
     $ var8: chr [1:24] "Editorial" NA "News & Views" "News & Views" ...
    

    【讨论】:

    • 抱歉应该是:bind_rows(bind_rows(df$V1),bind_rows(df$V2),bind_rows(df$V3))
    猜你喜欢
    • 2023-03-03
    • 2016-11-29
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 2018-12-16
    • 2023-03-17
    相关资源
    最近更新 更多