2017-10-13 63 views
0

我在數據框的列中有下面的列表。Json列表不能正常壓扁

正如你所看到的,變量通過項目改變。列affilications並不總是存在。

我一直在嘗試flatten列表到一個數據框或list of 3,但我是一個單一的columg與每個列的所有元素。

有沒有一種方法,我可以告訴R每個元素有3列,並且第一個不總是存在和填充它,讓我們說null

[[1]] 
NULL 

[[2]] 
     affiliations author_id  author_name 
1 Punjabi University 780E3459  munish puri 
2 Punjabi University 48D92C79 rajesh dhaliwal 
3 Punjabi University 7D9BD37C  r s singh 

[[3]] 
    author_id   author_name 
1 7FF872BC barbara eileen ryan 

[[4]] 
    author_id  author_name 
1 0299B8E9 fraser j harbutt 

[[5]] 
    author_id  author_name 
1 7DAB7B72 richard m freeland 

[[6]] 
NULL 

這是我得到的,當我試着壓扁它。

   authors 
1 Punjabi University 
2 Punjabi University 
3 Punjabi University 
4   780E3459 
5   48D92C79 
6   7D9BD37C 
7   munish puri 
8  rajesh dhaliwal 
9   r s singh 
10   7FF872BC 

但我真正需要的是:

[[1]] NULL 

[[2]]affiliations author_id  author_name 
1 Punjabi University 780E3459  munish puri 
2 Punjabi University 48D92C79 rajesh dhaliwal 
3 Punjabi University 7D9BD37C  r s singh 

[[3]] NULL author_id   author_name 
1  NULL 7FF872BC barbara eileen ryan 

回答

1

我我理解正確的話,你有數據如下:

require(tidyverse) 

list(
    NULL, 
    tibble(a=c(2, 2), b=c(2, 2), c=c(2, 2)), 
    tibble(b=3, c=3) 
) 

所以:

[[1]] 
NULL 

[[2]] 
# A tibble: 2 x 3 
     a  b  c 
    <dbl> <dbl> <dbl> 
1  2  2  2 
2  2  2  2 

[[3]] 
# A tibble: 1 x 2 
     b  c 
    <dbl> <dbl> 
1  3  3 

使用bind_rows resul ts在:

bind_rows(list(
    NULL, 
    tibble(a=c(2, 2), b=c(2, 2), c=c(2, 2)), 
    tibble(b=3, c=3) 
)) 

# A tibble: 3 x 3 
     a  b  c 
    <dbl> <dbl> <dbl> 
1  2  2  2 
2  2  2  2 
3 NA  3  3 
+0

這意味着我需要知道所有項目的尺寸?這是數據集的一部分。我有幾百萬行。 –

+0

不,試試吧。 – Rentrop

+0

對不起,我得到:'在bind_rows_(x,.id)中出錯:參數1必須有名稱' –