gpt4 book ai didi

r - 将列表中的 NULL 更改为 NA 而不进行转换

转载 作者:行者123 更新时间:2023-12-03 21:27:08 25 4
gpt4 key购买 nike

我有一个要变成数据框的列表。该列表来自一个 API,它包含一些 NULL值(value)观。关于这个主题有关于 SO 的问题 herehere ,但它们要么处理数据帧,要么在第二个链接的情况下,鼓励 OP 首先转换为数据帧。我想保留列表结构。

我以以下方式解析它,这是一些示例数据:

example <- list(
list(
ID = "1",
Name = "Joe",
Middle_name = "Alan",
Surname = "Smith"
),
list(
ID = "2",
Name = "Sarah",
Middle_name = NULL,
Surname = "Jones"
),
list(
ID = "3",
Name = "Robert",
Middle_name = "Myles",
Surname = "McDonnell"
)
)

N <- NA_character_

df <- tibble::tibble(
id = purrr::map_chr(example, .null = N, "ID"),
name = purrr::map_chr(example, .null = N, "Name"),
middle = purrr::map_chr(example, .null = N, "Middle_name"),
surname = purrr::map_chr(example, .null = N, "Surname")
)


> df
# A tibble: 3 x 4
id name middle surname
<chr> <chr> <chr> <chr>
1 1 Joe <NA> Smith
2 2 Sarah <NA> Jones
3 3 Robert <NA> McDonnell

看来这个问题在 purrr repo 中有一些历史。 ,但是当我使用像 is_empty() 这样的 purrr 函数时或 compact() ,我要么得到一个错误,要么它不起作用。

有谁知道我怎么能做到这一点,最好保持 tibble & map_chr我在上面使用的方法?

最佳答案

您的示例确实适用于 purrr 的开发版本。
NULL rows 导致方法出现问题,例如使用 dplyr::bind_rows ,否则可以将列表列表折叠成小标题。删除 NULL 的解决方法行是循环和flatten每个列表。通过 map_df 循环播放绑定(bind)行并给出您想要的结果。

map_df(example, flatten)

# A tibble: 3 x 4
ID Name Middle_name Surname
<chr> <chr> <chr> <chr>
1 1 Joe Alan Smith
2 2 Sarah <NA> Jones
3 3 Robert Myles McDonnell

关于r - 将列表中的 NULL 更改为 NA 而不进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44729617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com