R包dplyr中的head()函数

时间:2014-05-01 13:18:39

标签: r dplyr

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

谢谢!

ZR

5 个答案:

答案 0 :(得分:9)

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

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

  

" glimpse()可以查看tbl中的所有列,   显示每个变量的数据,可以放在一行上。"

答案 1 :(得分:2)

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

print.data.frame(head(your_dplyr_dataframe))

答案 2 :(得分:2)

为什么不定义自己的head - 类型函数。我用这个。它已根据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

答案 3 :(得分:2)

设置tibble.width选项以控制显示的列数。

options(tibble.width = Inf)

有关详细信息,请参阅?print.tbl_df

答案 4 :(得分:0)

您还可以只将head(data)分配给变量,应该保持tbl_df

test <- head(data)

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