data.table nrow>100 时打印错误
data.table print error when nrow>100
打印 data.table 时会出现一个奇怪的错误,但仅当 data.table 大小超过 100 时才会发生(如下例)。
当 print()
替换为 print.data.frame()
时,错误消失。
因此,我的猜测是 print
-->print.data.frame
继承仅在 data.table 大小不超过 100 时才被识别。
有人可以直觉告诉我为什么会这样吗?
我的 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)
打印 data.table 时会出现一个奇怪的错误,但仅当 data.table 大小超过 100 时才会发生(如下例)。
当 print()
替换为 print.data.frame()
时,错误消失。
因此,我的猜测是 print
-->print.data.frame
继承仅在 data.table 大小不超过 100 时才被识别。
有人可以直觉告诉我为什么会这样吗? 我的 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)