gpt4 book ai didi

r - 如果 nrow=0,如何将空行添加到 data.table?

转载 作者:行者123 更新时间:2023-12-04 16:46:35 25 4
gpt4 key购买 nike

我可以通过以下方式轻松地向数据框中添加一个空行;

if(nrow(df)==0){ df[nrow(df)+1,] <- NA }

如何对 data.table 做同样的事情?

最佳答案

这似乎可行

library(data.table)
# construct an example
dt <- data.table("a", "b")
dt
V1 V2
1: a b
dt <- dt[0L] # could also use dt[-1L] in this case

请注意,dt[0L] 将始终返回一个包含 0 行但与 dt 具有相同列的 data.table(由于来自 Henrik 的链接才了解到这一点)。等效于 data.frame 的是 dat[0L,]

检查它是否有 0 行。以编程方式,您将使用 nrow 来检查 OP 中给出的内容。

dt
Empty data.table (0 rows) of 2 cols: V1,V2

现在,填充它

dt[NA]
V1 V2
1: NA NA

正如 Henrik 在下面的评论中指出的,data.table 的 [ 方法中的 i 参数通常将 NA 解释为 FALSE,这将导致删除与此值关联的行。我们可以通过

看到这一点
data.table("a", "b")[as.logical(NA)]
Empty data.table (0 rows) of 2 cols: V1,V2

data.table("a", "b")[(NA)]
Empty data.table (0 rows) of 2 cols: V1,V2

但是,由于 Henrik 对 data.table 代码的深入挖掘,data.table 的作者针对 dt[NA] 的确切语法构建了一个特例以返回单行数据。在每列中填充 NA 的表。在这种情况下,他们将逻辑 NA 替换为 NA 的整数版本 NA_integer_。

因此,为了与正确的数据类型保持一致,

dt[NA_integer_]

是首选语法。 Frank 在评论中提到,可以通过将 NA_integer_ 替换为任何正整数值来返回相同的结果,例如

dt[1L]

会起作用。将这种见解推广到任何 data.table,您可以返回带有 NA 值的单行 data.table

dt[nrow(dt) + 1L]

关于r - 如果 nrow=0,如何将空行添加到 data.table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48732393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com