r - 取消嵌套具有不同数据类型的 tibbles 列表列(不能组合 double 和字符)

标签 r tidyr

我想取消嵌套的 tibble,但是出现错误。

示例数据:

library(tidyverse)

df <- tribble(
  ~x, ~y,
  1,  tibble(a=1,   b=2),
  2,  tibble(a=4:5, b=c("thank","you"),c=1:2))

df
#> # A tibble: 2 x 2
#>       x y               
#>   <dbl> <list>          
#> 1     1 <tibble [1 x 2]>
#> 2     2 <tibble [2 x 3]>

df %>% unnest(y)
#> Error: Can't combine `..1$b` <double> and `..2$b` <character>.

reprex package 创建于 2021-11-03 (v2.0.1)

我想我必须将 y 中列出的所有 tibbles 的数据类型更改为字符,但我坚持这样做。

最佳答案

也许是下面的?

library(tidyverse)

df <- tribble(
  ~x, ~y,
  1,  tibble(a=1,   b=2),
  2,  tibble(a=4:5, b=c("thank","you"),c=1:2))

df %>% 
  mutate(y = map(y, ~ mutate(.x, b = as.character(b)))) %>%
  unnest(cols = c(y))

#> # A tibble: 3 × 4
#>       x     a b         c
#>   <dbl> <dbl> <chr> <int>
#> 1     1     1 2        NA
#> 2     2     4 thank     1
#> 3     2     5 you       2

关于r - 取消嵌套具有不同数据类型的 tibbles 列表列(不能组合 double 和字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69826290/

相关文章:

r - 在 dplyr 的特定列范围内使用 mutate case_when()

r - 使用 R 中的 Statnet 进行加权网络中的中心性测量

r - R中三角形区域的双重积分

r - 访问 rshiny 中动态生成的输入

R:更改多个表的列名

r - tidyverse 使用重复键传播并根据唯一键填充 NA

r - ggplot中没有边框的圆形

regex - 在第一个遇到的数字上通过 dplyr 使用单独的 (tidyr) 分隔列

r - 聚集在前两行

r - 结合使用 pivot_longer 和 pivot_wider