首页 > 解决方案 > 枢轴更宽会产生嵌套对象

问题描述

这是关于最新tidyr版本的。我正在尝试pivot_widerpivot_longer更新library(tidyr)1.0.0)

当我在下面运行时,我试图获得正常的虹膜数据集,但是我得到了嵌套的 3X5 尺寸小标题,不确定发生了什么(我阅读了https://tidyr.tidyverse.org/articles/pivot.html)但仍然不确定如何避免这种情况

library(tidyr)
iris %>% pivot_longer(-Species,values_to = "count") %>% 
pivot_wider(names_from = name, values_from = count)

预期输出:普通鸢尾花数据集(150 X 5 维)

编辑:我在下面读到,如果我环绕 unnest() 我会得到预期的输出。当我们没有将它嵌套在任何地方时,我无法理解为什么要取消它。任何基本的帮助将不胜感激。想了解出什么问题的概念。

标签: rdataframetidyversetidyr

解决方案


正如我从 Akrun 和其他乐于助人的朋友和帖子中了解到的(不是错误或任何东西)

spread(., name, count) 会引发错误,因为每个物种 x 名称都有多行。pivot_wider 通过提供列表列做得更好。如果我们为每一行添加唯一 ID,那么它就可以正常工作。

library(tidyverse)

iris %>%
  rowid_to_column() %>% 
  pivot_longer(-c(rowid, Species), values_to = "count") %>%
  pivot_wider(names_from = name, values_from = count) %>% 
  select(-rowid)

推荐阅读