2015-12-29 96 views
4

我在Windows 7上運行Rstudio 0.99.489和R-3.2.3如何禁用底部的data.table名稱?

如何避免在數據底部打印V1和N?

options(datatable.print.nrows = Inf) 
dt <- data.table(sample.int(2e3, 1e4, T)) 
print(dt[ , .(.N), V1]) 

... 
1980: 419 1 
1981: 898 2 
1982: 1260 1 
     V1 N 

回答

5

您可以將對象的打印操作爲常規字符向量。

library(data.table) 
options(datatable.print.nrows = Inf) 
dt = data.table(sample.int(2e3, 1e4, T)) 
myprint = function(x){ 
    prnt = capture.output(print(x)) 
    cat(prnt[-length(prnt)], sep="\n") 
} 
myprint(dt[ , .(.N), V1]) 
2

下面是需要考慮的一個選擇。由於data.table s增強data.frame s,爲什麼不只是使用print方法data.frame s?這樣,您既可以打印輸入的所有行,也可以在底部顯示列名。

例如,以下數據集足以說明在底部打印名稱的行爲。

set.seed(1) 
dt <- data.table(sample(21, 1000, TRUE)) ## Sufficient to demonstrate behavior 
dt[, .N, by = V1]      ## Shows the names at the bottom 

你可以手動指定print.data.frame方法,像這樣:

print.data.frame(dt[, .N, by = V1])  ## Specify use of data.frame print method 

或者,因爲你不打印的東西會影響你原來data.table,你也可以做這樣的事情:

setDF(dt[, .N, by = V1])[]    ## dt stays a `data.table` 
+0

尤其是因爲他們已經設置了'datatable.print.nrows = Inf' ... – MichaelChirico