r - nrow>100时data.table打印错误

标签 r data.table

打印 data.table 时会出现奇怪的错误,但仅当 data.table 大小超过 100 时才会发生(如下例)。 当 print() 替换为 print.data.frame() 时,该错误消失。 因此,我的猜测是,只有当 data.table 大小不超过 100 时,才会识别 print-->print.data.frame 继承。

有人可以直观地解释为什么会发生这种情况吗? 我的 R 版本是 3.1.2。

library(data.table)

print(data.table(x=1:100), row.names=F) <-this command prints data.table

print(data.table(x=1:101), row.names=F) <- this command gives an error as below.

Error in `rownames<-`(`#tmp#`, value = rep.int("", nrow(x))) :
  length of 'dimnames' [1] not equal to array extent

最佳答案

您可能将 datatable.print.nrows 选项设置为默认值 100。

getOption("datatable.print.nrows")
# [1] 100

您可以通过更改选项的值或使用 print.data.table() 中的 nrows 来更改打印行数。后者可能是最好的方法,因为它不会更改默认值。

args(data.table:::print.data.table)
# function (x, topn = getOption("datatable.print.topn"), 
#     nrows = getOption("datatable.print.nrows"), row.names = TRUE, ...) 

这会起作用 -

dt <- data.table(x = 1:101)
print(dt, nrows = nrow(dt), row.names = FALSE)

关于r - nrow>100时data.table打印错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32235244/

相关文章:

r - data.table 分组列的长度为 "J"中的 1

r - 如何进行 data.table 滚动连接?

r - data.table 聚合与日期滚动子集

r - 结合条件

R:使用 cat() 获取类 Unix 换行符 LF 写入文件

r - as.list.Date(R 编程语言)中的潜在错误

r - 使用 data.table 模糊连接两个数据框

r - 估计面板中​​常见集合成员随时间变化的百分比

r - 对 Gamma 分布使用 anova() 给出看似随机的 p 值

r - 加速 R 中的 for 循环