R 是否可以打印一个data.table的100多行?
data.table有一个很好的特性,可以抑制输出到表的头部和尾部 是否可以一次查看/打印100多行R 是否可以打印一个data.table的100多行?,r,printing,data.table,options,output-formatting,R,Printing,Data.table,Options,Output Formatting,data.table有一个很好的特性,可以抑制输出到表的头部和尾部 是否可以一次查看/打印100多行 library(data.table) ## Convert the ubiquitous "iris" data to a data.table dtIris = as.data.table(iris) ## Printing 100 rows is possible dtIris[1:100, ] ## Printing 101 rows is truncated dtIris[1:101,
library(data.table)
## Convert the ubiquitous "iris" data to a data.table
dtIris = as.data.table(iris)
## Printing 100 rows is possible
dtIris[1:100, ]
## Printing 101 rows is truncated
dtIris[1:101, ]
我经常有一些数据。表格结果有点大(例如200行),我只想查看。数据的打印方法。
表格有一个参数nrows
:
args(data.table:::print.data.table)
function (x, nrows = 100L, digits = NULL, ...)
您可以使用此选项控制打印的行数:
print(dtIris, nrow=105)
.....
99: 5.1 2.5 3.0 1.1 versicolor
100: 5.7 2.8 4.1 1.3 versicolor
101: 6.3 3.3 6.0 2.5 virginica
102: 5.8 2.7 5.1 1.9 virginica
103: 7.1 3.0 5.9 2.1 virginica
104: 6.3 2.9 5.6 1.8 virginica
105: 6.5 3.0 5.8 2.2 virginica
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
这是一个混乱的选项,但您始终可以将其导出到excel以方便地查看它
library(xlsReadWrite)
write.xls(mydata, "c:/mydata.xls")
View()
(就像在视图(iris)
或视图(dtIris[1:120,])
)中一样)不会截断数据。表格
s通常比打印/输出数据更好。*
到控制台。要打印顶部60行和底部60行(默认为顶部5行和底部5行):
只能将其转换为data.frame进行打印:
iris_dt = as.data.table(iris)
print(as.data.frame(iris_dt))
表用于存储大量数据。享受Excel带来的乐趣。因此我提出了“一个混乱的选项”。取决于数据的大小。如果您已经在使用R,并且您对特定问题的解决方案是将数据导出到Excel,请询问堆栈溢出以获得更好的方法。Timothy,您可能会发现这很有用:+1,这也是常见问题2.11。还请注意,奇怪的是,在提示符下键入print(DT)
(带或不带nrows
)比只键入DT
要快。在第二种(更常见的)情况下(在分派过程中?),在data.table方法出现以打印头部和尾部之前,似乎要复制整个对象。如果有人知道R为什么这么做,我很想知道。请参阅关于applyClosure
中的注释nrows
在我的示例中不起作用,它仅显示截断的表。但是,topn
起作用。真奇怪。例如,我使用了data.table::print.data.table(dtIris,nrows=100)
在我的例子中n
起作用,但是nrows
和topn
都不起作用(R3.3.2)print(DT,topn=150)
对我来说可以显示前150行。R版本3.4.2(2017-09-28)data.table_1.10.4-3平台:x86_64-pc-linux-gnu(64位),运行于:Ubuntu 16.04.3 LTSVery nice!甚至可以在RStudio服务器环境下工作,并允许我将一份小报告复制到Excel中,以供子孙后代使用。@geneorama--感谢您添加此注释。我通常使用普通的Windows R gui或Windows emacs安装,我想知道View()
的实现范围有多广。我特别好奇它在*NIX机器上产生了什么。它也在linux上工作,这里。。。但我不知道如何复制报告。很好。您也可以在选项中使用选项(datatable.print.topn=60)
进行设置。另外,我还了解到一个功能,它允许您扩展或限制打印列的宽度选项(datatable.prettyprint.char=80L)
。默认情况下未设置此prettyprint选项,因此您必须知道该命令才能使用它(而您可以在options()中搜索其他选项,如datatable.print.topn
和datatable.print.nrows
,因为我在其他任何地方都找不到它:控制列宽(nchar/字符数)的选项是选项(datatable.prettyprint.char=5L)
。这只在(新闻)[好的解决办法,但它没有回答问题。如果你开始研究解决办法,那么你可以提出很多建议,比如“只使用SAS!”或“一次打印一行!”…你明白了。
iris_dt = as.data.table(iris)
print(as.data.frame(iris_dt))