我有一些旧代码,过go 使用tidyr::unnest_wider()将嵌套的命名列表取消嵌套到它们自己的列中;然而,现在它不再起作用了.相反,我得到的错误是x$name_of_list必须是一个向量,而不是<non-vector>对象,其中非向量对象包括<mcpfit><patchwork/gg/ggplot>个对象.看起来他们试图解决这个问题here,但是使用tidyr v1.3.0仍然不能解决这个问题.

我不能轻易地从我自己的用例中创建一个可重现的例子.但我将使用上面Github问题链接中列出的示例,希望这也适用于我的用例.

library(tidyverse)  
  
m <- 
  tibble::as_tibble(mtcars[1,]) %>% 
  mutate(ls_col=list(
    list(
      a=c(1:10), 
      b=lm(cyl~gear))
    )
  )  

m2 <-
  m %>% 
  unnest_wider(ls_col)

我正在寻找备选的data.table或基本R解决方案或tidyverse解决方案(例如,从嵌套列表中删除非向量对象,然后使用tidyr::unnest_wider()).tidyr::unnest()似乎可以工作,但是我不知道如何将包含列表的列转换为它们自己的列(每次我try 这样的操作时,R都会崩溃).

推荐答案

您可以指定strict = TRUE

library(tidyverse)  

m <- tibble::as_tibble(mtcars[1,]) %>% 
  mutate(ls_col= list(
    list(
      a=c(1:10), 
      b=lm(cyl~gear))
  ))

m %>% 
  unnest_wider(ls_col, strict = TRUE)
#> # A tibble: 1 x 13
#>     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb a      b    
#>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <list> <lis>
#> 1    21     6   160   110   3.9  2.62  16.5     0     1     4     4 <int>  <lm>

创建于2023-08-04年第reprex v2.0.2

R相关问答推荐

geom_Ribbon条件填充创建与数据不匹配的形状(ggplot 2 r)

如果列中存在相同的字符串,则对行值进行总和

基于多列将值链接到NA

为什么当用osmdata映射R时会得到相邻状态?

如何使用列表中多个列表中的第一条记录创建数据框

如何从R ggplot图片中获取SVG字符串?

条形图顶部与其错误条形图不对齐

将箭头绘制在图形外部,而不是图形内部

使用R将简单的JSON解析为嵌套框架

用多边形替换地块点

如何预测原始数据集并将值添加到原始数据集中

在ggploy中创建GeV分布时出错

当由base::限定时,`[.factor`引发NextMethod错误

禁用时,SelecizeInput将变得不透明

将边列表转换为路径长度列表

如何在R中使用因子行求和?

将y轴格式更改为R中的百分比

为什么R列名称忽略具有指定名称的向量,而只关注索引?

如何将两个用不同的运算符替换*的矩阵相乘

按顺序将地块添加到列表