我有一堆大型数据帧,所以每次我想显示它们时,都必须使用head
:
head( blahblah(somedata) )
在最初的几百次之后,打字头一直变老,所以如果可能的话,我想要一个简单的方法来做到这一点。如果你知道这个秘密咒语,那么与java相比,R的一个很酷的事情就是这样的东西通常很容易。
我在选项中搜索,发现max.print
几乎有效,但现在有时间延迟。
head( blahblah(somedata) )
....是瞬间的(在我的感知范围内)
options(max.print=100)
blahblah(somedata)
....大约需要3秒钟,比输入head
打印大型数据结构时是否有一些方法可以自动应用head
?
重现此行为的一段代码:
long_dataset = data.frame(a = runif(10e5),
b = runif(10e5),
c = runif(10e5))
system.time(head(long_dataset))
options(max.print = 6)
system.time(print(long_dataset))
答案 0 :(得分:7)
使用data.table
包(以及data.table
非data.frame
个对象)将我的评论放入答案中将自动仅打印前5行和后5行(一旦data.table大于100行)
library(data.table)
DT <- data.table(long_data)
DT
1: 0.19613138 0.88714284 0.25715067
2: 0.25405787 0.76544909 0.75632468
3: 0.24841384 0.22095875 0.52588596
4: 0.72766161 0.79696771 0.88802759
5: 0.02448372 0.77885568 0.38199993
---
999996: 0.28230967 0.09410921 0.84420162
999997: 0.73598931 0.86043537 0.30147089
999998: 0.86314546 0.90334347 0.08545391
999999: 0.85507851 0.46621131 0.23892566
1000000: 0.33172155 0.43060483 0.44173400
data.table FAQ 2.11明确处理此问题。
data.frame
个对象。如果您对将现有data.frame
个对象转换为data.table
个对象犹豫不决,则只需将print.data.frame
定义为data.table:::print.data.table
print.data.frame <- data.table:::print.data.table
long_dataset
1: 0.19613138 0.88714284 0.25715067
2: 0.25405787 0.76544909 0.75632468
3: 0.24841384 0.22095875 0.52588596
4: 0.72766161 0.79696771 0.88802759
5: 0.02448372 0.77885568 0.38199993
---
999996: 0.28230967 0.09410921 0.84420162
999997: 0.73598931 0.86043537 0.30147089
999998: 0.86314546 0.90334347 0.08545391
999999: 0.85507851 0.46621131 0.23892566
1000000: 0.33172155 0.43060483 0.44173400
答案 1 :(得分:5)
我赞同@ thelatemail的建议,即重新定义print.data.frame
:
print.data.frame <- function(df) {
if (nrow(df) > 10) {
base::print.data.frame(head(df, 5))
cat("----\n")
base::print.data.frame(tail(df, 5))
} else {
base::print.data.frame(df)
}
}
data.frame(x=1:100, y=1:100)
# x y
# 1 1 1
# 2 2 2
# 3 3 3
# 4 4 4
# 5 5 5
# ----
# x y
# 96 96 96
# 97 97 97
# 98 98 98
# 99 99 99
# 100 100 100
更复杂的版本可以将所有内容排列在一起并避免重复的标题,但是你明白了。
您可以将此功能放在.Rprofile
或Rprofile.site
文件中(请参阅?Startup
),以便每次启动R会话时都会存在此功能。