【问题标题】:Json list not 'flattening' properlyJson 列表未正确“展平”
【发布时间】:2018-03-25 20:39:13
【问题描述】:

我在数据框的一列中有以下列表。

如您所见,变量通过项目发生变化。 affilications 列并不总是存在。

我一直在尝试将 flatten 列表添加到数据框或 list of 3,但我得到一个包含每列所有元素的列。

有没有一种方法可以告诉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

【问题讨论】:

    标签: json r list


    【解决方案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 会导致:

    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
    

    【讨论】:

    • 这意味着我需要知道所有物品的尺寸?这是数据集的一个示例。我有几百万行。
    • 没有。试试看吧。
    • 对不起,我收到了:Error in bind_rows_(x, .id) : Argument 1 must have names
    猜你喜欢
    • 1970-01-01
    • 2021-01-05
    • 2018-11-12
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多