gpt4 book ai didi

r - 涉及 NaN、NA、numeric(0) 的 pivot_longer tibble

转载 作者:行者123 更新时间:2023-12-05 05:36:35 32 4
gpt4 key购买 nike

我正在尝试将 tibble 转换为更长的格式。

library(tidyverse)

tbl <- tibble(
a_X_values = list(numeric(0), c(3, NaN), c(4, 5, 6, NaN, NaN)),
a_Y_values = list(5, NaN, numeric(0)),
b_X_values = c(7, 8, 9),
b_Y_values = c(NA, NaN, 1)
)

tbl_longer <- tbl %>%
unnest(where(is.list)) %>%
pivot_longer(cols = everything(),
names_to = c("alpha", "beta", ".value"), names_sep = "_")

我收到以下错误:

Error: In row 3, can't recycle input of size 5 to size 0.
Run `rlang::last_error()` to see where the error occurred.

如何修复错误?

  1. 它应该涉及取消嵌套选定的列表列unnest(where(is.list))

  2. 一个可能的解决方案还应该包括将所有数字 (0) 和 NaN 转换为 NA。

最佳答案

问题似乎出在列表中包含的空数值上,如果他们没有列出,你的 data.frame 将无法工作

如果我们在列表上应用一个函数,搜索空数值,用 NA 替换它们,然后我们可以使用您的代码旋转更长的时间

library(dplyr)

tbl %>%
rowwise() %>%
mutate(across(where(is.list), \(x) ifelse(length(x) == 0, list(NA), list(x)))) %>%
unnest(where(is.list)) %>%
pivot_longer(cols = everything(),
names_to = c("alpha", "beta", ".value"), names_sep = "_") %>%
ungroup()
  alpha beta  values
<chr> <chr> <dbl>
1 a X NA
2 a Y 5
3 b X 7
4 b Y NA
5 a X 3
6 a Y NaN
7 b X 8
8 b Y NaN
9 a X NaN
10 a Y NaN

关于r - 涉及 NaN、NA、numeric(0) 的 pivot_longer tibble,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73285427/

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