【问题标题】:head() function in R package dplyrR 包 dplyr 中的 head() 函数
【发布时间】:2014-06-17 23:30:09
【问题描述】:

这是一个小问题,但在 R 中,当您键入 head(data.frame) 时,您会从所有显示的列中获取前几条记录。在dplyr 包中,head 函数已更改为仅显示可以适合您的控制台窗口的列。这通常很好,但我经常想查看所有列的前几条记录。有没有办法告诉 head(在 dplyr 中)显示所有列而不将 tbl.df/data.frame 转换为 data.frame(我更喜欢 headstr())。

谢谢!

ZR

【问题讨论】:

  • dplyr有head函数吗?
  • @Henrik,你确定这也适用于列吗?
  • @Arun,我不确定。在这种情况下,我只是将其发布为可能相关的帖子。我应该更明确地表达我的意图。感谢您指出这一点,阿伦!
  • 在我的 RProfile.site 我有library(dplyr);head <- glimpse

标签: r dplyr


【解决方案1】:

您现在可以在 dplyr 0.2 中使用 glimpse() 动词:

来自https://github.com/hadley/dplyr/releases

"glimpse() 可以查看 tbl 中的所有列, 为每个变量显示尽可能多的数据。"

【讨论】:

  • glimpse() 很好并且得到了答案(尽管我更习惯于 head() 样式方向并且更喜欢 head() 而不是 str())。在回答关于创建我自己的函数的问题时——这绝对是一个好方法。但是我经常教 R 并且发现我的小个人函数会在课堂笔记中找到它们的方式,所以如果可能的话,我更喜欢使用现有包中的函数。谢谢大家!
【解决方案2】:

正如 Arun 所说,这是因为 print.tbl_df 方法。 做吧:

print.data.frame(head(your_dplyr_dataframe))

【讨论】:

  • 感谢您的帮助。也许我应该澄清这一点。但是 head() 函数很有用,因为它是查看数据的超级快捷方式。头(数据),你就完成了。但是,如果我每次都必须输入 print.data.frame(head(dplyr_df)) 就达不到目的。我绝对可以做 head(data.frame(dplyr_df)) 但这是太多的打字。我想也许哈德利已经包含了某种头部(dplyr_df,inclCol=T)。我猜不是?
【解决方案3】:

要控制显示多少列,显式调用print(),设置tibble.width 参数。

print(yourdataframe, tibble.width = Inf)

要为您打印的每个 tibble 设置此功能,请设置 tibble.width 全局选项。

options(tibble.width = Inf)

更多信息请参见?print.tbl_df

【讨论】:

  • 这其实直接回答了问题
【解决方案4】:

为什么不直接定义自己的head-type 函数。我用这个。它已针对data.table 进行了调整。这样,您可以查看任何您想要的内容。前 3 行设置为默认值以节省空间。

 peek <- function(d, x = ncol(d))
 {
     if (is.data.table(d)) d[1:3, 1:x, with = FALSE]
     else if (is.data.frame(d) | is.matrix(d)) d[1:3, 1:x] 
 }   ## note the 3 row default (to save space below)

data.table

> library(data.table)
> emteecars <- as.data.table(mtcars)

> peek(emteecars, 5)
#     mpg cyl disp  hp drat
# 1: 21.0   6  160 110 3.90
# 2: 21.0   6  160 110 3.90
# 3: 22.8   4  108  93 3.85

> peek(emteecars)
#     mpg cyl disp  hp drat    wt  qsec vs am gear carb
# 1: 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
# 2: 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
# 3: 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1

现在在data.frame

> peek(mtcars)
#                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
# Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
# Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1

> peek(as.matrix(mtcars), 2)
#                    mpg cyl
# Mazda RX4         21.0   6
# Mazda RX4 Wag     21.0   6
# Datsun 710        22.8   4

【讨论】:

    【解决方案5】:

    您也可以将 head(data) 分配给一个变量,应该保留一个 tbl_df

    test <- head(data)
    

    不会显示在控制台窗口中,但可能对您有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      相关资源
      最近更新 更多