2015-11-12 3 views
3

У меня есть data.table с более чем 10 тыс. Строк, которые я бы хотел полностью распечатать на консоли. Несмотря на сообщение об ошибке, которое вы получаете - увеличение options(max.print=...) не помогает - таблица по-прежнему отключается (в зависимости от ОС с max.print, установленной на 15000, она отключается на 1500 или 7500 для меня).Печать большого стола на консоль

Я рассматривал write.table вместо этого, но проблема есть в том, что я теряю выравнивание столбца, print обычно обеспечивает:

dt = data.table(a = c("sdflk", "sdflksdfsdfsdf"), b = c(1,2)) 
write.table(dt, sep = "\t", quote = F) 
#a  b 
#1  sdflk 1 
#2  sdflksdfsdfsdf 2 

Есть ли способ обойти это ограничение?

Вот большой data.table, если вы хотите поиграть:

dtl = data.table(a = sample(c("sdflk", "sdflksdfsdfsdf"), 15000, T), b = 1:15000) 
options(max.print = 15000) 
print(as.data.frame(dtl)) 
print(dtl, nrow = 15000) 
+0

Зачем вам это нужно печатать на консоли? Вы уверены, что не хотите, чтобы он был записан в файл где-то или что-то еще? Каковы именно требования? – MrFlick

+0

Потому что я хочу посмотреть на него (это Rscript, который я «меньше»). Да, я уверен :) Не совсем уверен, что вы подразумеваете под требования - это может быть до 100 тыс. Строк, вероятно, не больше. – eddi

+0

Так что вы действительно хотите написать стандартную версию, а не консоль как таковую. – MrFlick

ответ

4

Документация max.print?options) говорит, что это количество записей, а не строк, так

options(max.print = (nrow(dtl)+1)*ncol(dtl)) 

похоже, работает для примера в OP.

+0

Еще раз спасибо! Конечно, кто и почему думал, что это так, как 'print.data.frame' должен интерпретировать этот параметр вне меня ...« Запись »для' data.frame' - это определенно строка. – eddi

+0

Да, я согласен; это не интуитивно. Возможно, 'print.data.table' может быть написано так, что его' nrow' переопределяет 'max.print' ... не уверен, что это хорошая идея. – Frank

+1

** и ** сообщение об ошибке - достигнуто getOption ("max.print") - опущено xxx ** rows **; во всяком случае, я перестану говорить - я действительно хочу, чтобы ядро ​​R было так же отзывчивым, как некоторые разработчики пакетов, чтобы исправить свои проблемы – eddi

Смежные вопросы