r - tidyr::nest 在不同系统和包/R 版本上的不同行为

标签 r tidyr

最近更新到tidyr运行略有不同的 R 和包版本的两台不同机器(PC 和 mac)上的 1.0.0 版。
tiydr::nest的打印输出现在显示出细微的差异。我的问题似乎与 this post 有关,但不是。我对如何在新 nest 之间创建相同的结果不感兴趣。和 nest_legacy (这种差异是上面帖子的内容)。我对为什么会出现不同的打印输出很感兴趣,尽管相同 tidyr使用了版本,以及如何解决此问题(我的 PC 的打印输出看起来不正确)。

这是我的 mac 上的输出:

library(tidyr)

nested_tbl_mac <- iris %>%
  tidyr::nest(data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)) 

nested_tbl_mac
#> # A tibble: 3 x 2
#>   Species              data
#>   <fct>      <list<df[,4]>>
#> 1 setosa           [50 × 4]
#> 2 versicolor       [50 × 4]
#> 3 virginica        [50 × 4]

nested_tbl_mac[[2]] %>% class 
#> [1] "vctrs_list_of" "vctrs_vctr"

创建于 2019-11-25 由 reprex package (v0.3.0)

这是我电脑的输出:
library(tidyr)

nested_tbl_pc <- iris %>% 
  tidyr::nest(data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width))

nested_tbl_pc
#> # A tibble: 3 x 2
#>   Species    data                                                          
#>   <fct>      <S3: vctrs_list_of>                                           
#> 1 setosa     5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.8, 4~
#> 2 versicolor 7.0, 6.4, 6.9, 5.5, 6.5, 5.7, 6.3, 4.9, 6.6, 5.2, 5.0, 5.9, 6~
#> 3 virginica  6.3, 5.8, 7.1, 6.3, 6.5, 7.6, 4.9, 7.3, 6.7, 7.2, 6.5, 6.4, 6~

nested_tbl_pc[[2]] %>% class
#> [1] "vctrs_list_of" "vctrs_vctr"

创建于 2019-11-25 由 reprex package (v0.3.0)

对我来说,这似乎是一个打印问题。但是,与此不同的是post here我没有在我的两台机器上调整我的打印选项。

我加载的唯一包是 tidyr和所有基础包。
(.packages())
#> [1] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods"  
#> [7] "base"

最后,这里是tidyr的版本比较以及所有由 tidyr 导入的包在我的两台机器上(最后一行显示的是 R 版本):
#>    package    version_pc version_mac
#>    <chr>      <chr>      <chr>      
#>  1 tidyr      1.0.0      1.0.0      
#>  2 dplyr      0.8.3      0.8.3      
#>  3 ellipsis   0.3.0      0.2.0.1    
#>  4 glue       1.3.0      1.3.1      
#>  5 magrittr   1.5        1.5        
#>  6 purrr      0.3.2      0.3.3      
#>  7 Rcpp       1.0.2      1.0.2      
#>  8 rlang      0.4.1      0.4.0      
#>  9 stringi    1.2.4      1.2.2      
#> 10 tibble     2.1.1      2.1.3      
#> 11 tidyselect 0.2.5      0.2.5      
#> 12 utils      3.5.1      3.5.0      
#> 13 vctrs      0.2.0      0.2.0      
#> 14 lifecycle  0.1.0      0.1.0      
#> 15 R.Version  3.5.1      3.5.0

更新 : 我现在已经更新了所有由 tidyr 导入的包在我的 PC 上,它的版本号比我的 mac 小( gluepurrrtibble ),但这并不能解决问题。我想避免在我的 PC 上为 ellipsis 降级到较低版本, rlang , stringiutils .

解决方案 :正如马特在他的回答中暗示的那样,问题的根源在于pillar包裹。从版本更新 1.2.11.4.2解决了打印问题。我将问题视为 tidyr问题,但实际上是(嵌套的)小标题如何打印的问题。因此,我应该查看 tibble 的依赖关系。包也是如此。

最佳答案

我不是 100% 的,但我认为这是由于 pillar 的打印选项所致。 ,并根据 this您可以覆盖可能会产生您正在寻找的内容的打印:

print.tbl_df <- function(x, ...) {
  print.data.frame(x, ...)
  invisible(x)
}

关于r - tidyr::nest 在不同系统和包/R 版本上的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59033323/

相关文章:

r - 如何使用 hexSticker 创建 SVG 文件

r - 传播/聚集错误 : Must supply a symbol or a string as argument

r - 如何在R中旋转包含带有部分和子部分的列的数据框

python - 从共同作者数据创建边缘列表

r - 使用向量中的行列索引从数据框中提取值

r - 如何使用 gml 格式文件将 igraph 边缘属性设置为字符串?

r - 查找列中变化的索引

r - tidyr::unite 的数据表版本

r - 如何 `unnest` 两个不兼容的嵌套 tibble 列?

R:将宽格式转换为具有多个 3 个时间段变量的长格式