簡體   English   中英

將列表的列表與空元素綁定到一個 tibble / R

[英]Binding a list of lists , with empty elements into one tibble / R

我有一個很大的嵌套列表,其中包含其他列表,其中包含 tibbles。 清理元素后,我留下了很多空的 tibbles 和列表。

現在我想將我的結果放入一個 Dataframe 中,但我收到錯誤消息:

Argument x must have names.

我知道空元素搞砸了我綁定行的嘗試,但我找不到刪除所有空 tibbles 的方法。

這是我的數據結構:

a<-tibble (1:7,
        letters[7:1])

b<-tibble (1:7)

c<-tibble(.rows=2)




riddle<-list(list(a,b,c), list(list(a,b,c)), list(c),c)

bind_rows(riddle)

請注意,這只是一個最小化版本。 因此,任何手動編輯或刪除元素都不適用於我的原始數據。

任何帶有 purrr 的解決方案都會非常有用::)

提前感謝您的幫助!

如果我們想要獲取單個數據集,請使用map遍歷list ,然后使用bind_rows

library(purrr)
library(dplyr)
map_dfr(riddle, bind_rows)

如果打算刪除具有 0 行或 0 列的數據集,請使用遞歸函數檢查是否all dim屬性的值都大於 0

library(rrapply)
riddle2 <- rrapply(riddle, condition = function(x) all(dim(x)>0), 
     classes = "data.frame", how= "prune")

-比較結構

#riddle2
> str(riddle2)
List of 2
 $ :List of 2
  ..$ : tibble [7 × 2] (S3: tbl_df/tbl/data.frame)
  .. ..$ 1:7         : int [1:7] 1 2 3 4 5 6 7
  .. ..$ letters[7:1]: chr [1:7] "g" "f" "e" "d" ...
  ..$ : tibble [7 × 1] (S3: tbl_df/tbl/data.frame)
  .. ..$ 1:7: int [1:7] 1 2 3 4 5 6 7
 $ :List of 1
  ..$ :List of 2
  .. ..$ : tibble [7 × 2] (S3: tbl_df/tbl/data.frame)
  .. .. ..$ 1:7         : int [1:7] 1 2 3 4 5 6 7
  .. .. ..$ letters[7:1]: chr [1:7] "g" "f" "e" "d" ...
  .. ..$ : tibble [7 × 1] (S3: tbl_df/tbl/data.frame)
  .. .. ..$ 1:7: int [1:7] 1 2 3 4 5 6 7
#riddle
> str(riddle)
List of 4
 $ :List of 3
  ..$ : tibble [7 × 2] (S3: tbl_df/tbl/data.frame)
  .. ..$ 1:7         : int [1:7] 1 2 3 4 5 6 7
  .. ..$ letters[7:1]: chr [1:7] "g" "f" "e" "d" ...
  ..$ : tibble [7 × 1] (S3: tbl_df/tbl/data.frame)
  .. ..$ 1:7: int [1:7] 1 2 3 4 5 6 7
  ..$ : tibble [2 × 0] (S3: tbl_df/tbl/data.frame)
 Named list()
 $ :List of 1
  ..$ :List of 3
  .. ..$ : tibble [7 × 2] (S3: tbl_df/tbl/data.frame)
  .. .. ..$ 1:7         : int [1:7] 1 2 3 4 5 6 7
  .. .. ..$ letters[7:1]: chr [1:7] "g" "f" "e" "d" ...
  .. ..$ : tibble [7 × 1] (S3: tbl_df/tbl/data.frame)
  .. .. ..$ 1:7: int [1:7] 1 2 3 4 5 6 7
  .. ..$ : tibble [2 × 0] (S3: tbl_df/tbl/data.frame)
 Named list()
 $ :List of 1
  ..$ : tibble [2 × 0] (S3: tbl_df/tbl/data.frame)
 Named list()
 $ : tibble [2 × 0] (S3: tbl_df/tbl/data.frame)
 Named list()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM