is.null不适用于R中的null data.table[可能的错误]?
我相信这可能是一个错误。如果是,我将报告。正在寻找确认:is.null不适用于R中的null data.table[可能的错误]?,r,data.table,R,Data.table,我相信这可能是一个错误。如果是,我将报告。正在寻找确认: > is.null(data.table(NULL)) [1] FALSE 我在常见问题解答中看到以下内容: 2.5空数据表是否与DT[0]相同? 否,尽管打印方法另有指示。严格地说,这是不可能的 is.null(data.table(null))返回FALSE。此常见问题可能会在将来重新讨论 如果这是预期的行为:如何检查对象是否为空?特别是,空对象的rbindlist返回一个NULL数据。表如何检查 > is.null
> is.null(data.table(NULL))
[1] FALSE
我在常见问题解答中看到以下内容:
2.5空数据表是否与DT[0]相同?
否,尽管打印方法另有指示。严格地说,这是不可能的
is.null(data.table(null))返回FALSE。此常见问题可能会在将来重新讨论
如果这是预期的行为:如何检查对象是否为空?特别是,空对象的rbindlist
返回一个NULL数据。表
如何检查
> is.null(rbindlist(NULL))
[1] FALSE
我不知道为什么FAQ的措辞是这样的。但是,空数据表只是一个空列表:
> data.table:::null.data.table
function ()
{
ans = list()
setattr(ans, "class", c("data.table", "data.frame"))
setattr(ans, "row.names", .set_row_names(0L))
settruelength(ans, 0L)
alloc.col(ans)
}
它不是NULL
。从?列表中
:
空的pairlist,pairlist()与NULL相同。这是不同的
从列表()
您可以通过查看它的长度是否为0来检查它(
length(DT)==0
)。这就是data.table:::print.data.table
决定是打印“NULL data.table”还是“空数据表(0行)…”好的一点。现在已更改了data.table(NULL)
的输出。来自v1.8.9中的新闻:
现在打印data.table(NULL)
并改进了常见问题2.5。感谢:“NULL data.table(0行和0列)”
否。所谓“空数据表”,我们是指
数据表(空)
或as.data.table(空)
;i、 e
空数据。表| frame
为null
,附加了一些属性,使其不可用
NULL
不再使用。在R中,只有纯NULL
是NULL
,由is.NULL()
测试。什么时候
参考“null data.table”,我们使用小写null来提供帮助
区分大小写NULL。要测试null data.table,请使用
length(DT)==0
或ncol(DT)==0
(length
稍快,因为它是
基本函数)。空的data.table(DT[0]
)有一个或多个
列,所有列均为空。那些空列仍然有名称
和类型:
谢谢那就是我最后做的。。jsut检查了
nrow(DT)==0
@Alex length(DT)==0是否与ncol(DT)==0而不是nrow(DT)==0相同。常见问题解答试图说明is.null(data.frame(null))也为FALSE,并且由于is.null不是S3泛型,因此即使我们想更改data.table,也无法更改它。唯一为空的东西是空的data.table(NULL)
打印“NULL data.table”似乎是个问题,这会误导人,不是吗。具有0列和0行的数据框的data.frame(NULL)
输出似乎更好。
> data.table(NULL)
Null data.table (0 rows and 0 cols)
> as.data.table(NULL)
Null data.table (0 rows and 0 cols)
> data.frame(NULL)
data frame with 0 columns and 0 rows
> as.data.frame(NULL)
data frame with 0 columns and 0 rows
> DT = data.table(a=1:3,b=c(4,5,6),d=c(7L,8L,9L))
> DT[0]
Empty data.table (0 rows) of 3 cols: a,b,d
> sapply(DT[0],class)
a b d
"integer" "numeric" "integer"