【问题标题】:Display / print all rows of a tibble (tbl_df)显示/打印 tibble 的所有行 (tbl_df)
【发布时间】:2019-11-16 08:13:35
【问题描述】:

tibble(以前的 tbl_df)是由 R 中的 dplyr 数据框操作包创建的数据框的一个版本。它可以防止意外调用数据框时的长表输出。

一旦数据框被tibble/tbl_df 包装,是否有命令查看整个数据框(数据框的所有行和列)?

如果我使用df[1:100,],我会看到所有 100 行,但如果我使用df[1:101,],它只会显示前 10 行。我想轻松显示所有行以快速滚动浏览它们。

是否有 dplyr 命令来抵消这种情况或解开数据框的方法?

【问题讨论】:

  • View"tbl_df" 对象保持一致。
  • @G.Grothendieck 查看不同于打印。

标签: r dplyr options display


【解决方案1】:

tibble vignette 有一种更新方式来更改其默认打印行为:

您可以使用选项控制默认外观:

options(pillar.print_max = n, pillar.print_min = m): 如果多于 n 行,则只打印前 m 行。使用 options(pillar.print_max = Inf) 始终显示所有行。

options(pillar.width = n):使用 n 个字符槽水平显示数据。如果 n > getOption("width"),这将导致多层。使用options(pillar.width = Inf) 始终打印所有列,无论屏幕宽度如何。

示例

这将始终打印所有行:

options(pillar.print_max = Inf)

这实际上不会将打印限制为 50 行:

options(pillar.print_max = 50)

但这会将打印限制为 50 行:

options(pillar.print_max = 50, pillar.print_min = 50)

【讨论】:

  • 这将改变所有小标题的默认行为。我正在寻找一种方法来覆盖默认约束。 print(n=100) 似乎在做我想做的事。 (例如,count() 中的汇总表应该完整显示,而我确实希望我的数据表被截断。)
  • @dannid 看起来你想要接受的答案,那么。
  • “从 tibble 3.1.0 开始,打印完全由支柱包处理。” (来自“Printing tibbles”帮助文件。)要使用选项控制默认外观,您可以使用:options(pillar.print_max = n, pillar.print_min = m)
  • @petzi 太棒了,感谢举报。我相信我已经更新了它以反映 tibble 小插图中的最新内容。
【解决方案2】:

你也可以使用

print(tbl_df(df), n=40)

或在管道操作员的帮助下

df %>% tbl_df %>% print(n=40)

要打印所有行,请指定tbl_df %>% print(n = Inf)

编辑 31.07.2021: 在 > dplyr 1.0.0

Warning message:
`tbl_df()` was deprecated in dplyr 1.0.0.
Please use `tibble::as_tibble()` instead.

df %>% as_tibble() %>% print(n=40)

【讨论】:

  • 如果你不想担心n的值并且你已经在管道,你可以使用df %>% tbl_df %>% print(n = nrow(.))
  • 扩展@BLT​​的答案,可以设置n = Inf打印所有行。
  • print(带有 tibble)也有 width = n_extra = 选项来控制直接或间接打印的列数。
  • @ClaytonJY 我还发现 tbl_df %>% print(n = Inf) 可以为此工作。
  • 有人知道为什么print(n = ...) 在小标题显示中打开科学记数法吗?
【解决方案3】:

如果您想使用管道并且发现自己非常想查看整个 tibble,这里有一个带有函数 showAll() 的解决方案:

showAll<-function(tbl_df){
  print(tbl_df,n=nrow(tbl_df))
}

require(tibble)
#Truncated tibble (default)
mtcars %>% as_tibble()

#Full size tibble
mtcars %>% as_tibble() %>% showAll()

【讨论】:

    【解决方案4】:

    你可以在 Rstudio 中用 View() 更方便地打印它:

    df %>% View()
    
    View(df)
    

    【讨论】:

      【解决方案5】:

      我更喜欢把 tibble 变成 data.frame。它显示了一切,你就完成了

      df %>% data.frame 
      

      【讨论】:

        【解决方案6】:

        bookdown documentation 中所述,您还可以使用分页表

        mtcars %>% tbl_df %>% rmarkdown::paged_table()
        

        这将对数据进行分页并允许浏览所有行和列(除非配置为限制行)。示例:

        【讨论】:

        • 如该文档中所述:如果分页表是由 R Notebook 中的代码块生成的,则可以在块选项中添加参数 rows.print=[n] 以控制每页显示的行数.
        【解决方案7】:

        您可以使用as.data.frameprint.data.frame

        如果您希望这是默认值,您可以更改dplyr.print_max 选项的值。

        options(dplyr.print_max = 1e9)
        

        【讨论】:

          猜你喜欢
          • 2016-04-01
          • 2021-05-07
          • 2021-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多