gpt4 book ai didi

r - 在相同的 data.tables 上执行 bind_rows() 和 rbind() 后,相同的() = FALSE?

转载 作者:行者123 更新时间:2023-12-02 11:05:55 24 4
gpt4 key购买 nike

警告:新手。我有几个 data.tables,每个表有数百万行,变量主要是日期和因素。我正在使用 rbindlist() 来组合它们 because 。昨天,在将表垂直分解成更小的部分(而不是当前的水平拼接)后,我试图更好地理解 rbind (尤其是 fill = TRUE ),并且还尝试了 bind_rows() ,然后尝试验证结果但相同( )返回FALSE。

library(data.table)
library(dplyr)
DT1 <- data.table(a=1, b=2)
DT2 <- data.table(a=4, b=3)
DT_bindrows <- bind_rows(DT1,DT2)
DT_rbind <- rbind(DT1,DT2)
identical(DT_bindrows,DT_rbind)
# [1] FALSE

目视检查bind_rows() 和rbind() 的结果表明它们确实是相同的。我读过thisthis (来 self 改编示例的地方)。我的问题:(a)我缺少什么,(b)如果我的列的数量、名称和顺序相同,我是否应该担心相同()= FALSE?

最佳答案

identical 检查不相同的attributes。使用 all.equal,可以选择不检查属性 (check.attributes)

all.equal(DT_bindrows, DT_rbind, check.attributes = FALSE)
#[1] TRUE
<小时/>

如果我们检查两个数据集的str,就会很清楚

str(DT_bindrows)
#Classes ‘data.table’ and 'data.frame': 2 obs. of 2 #variables:
# $ a: num 1 4
# $ b: num 2 3
str(DT_rbind)
#Classes ‘data.table’ and 'data.frame': 2 obs. of 2 #variables:
# $ a: num 1 4
# $ b: num 2 3
# - attr(*, ".internal.selfref")=<externalptr> # reference attribute

通过将属性分配为 NULL,identical 返回 TRUE

attr(DT_rbind, ".internal.selfref") <- NULL
identical(DT_bindrows, DT_rbind)
#[1] TRUE

关于r - 在相同的 data.tables 上执行 bind_rows() 和 rbind() 后,相同的() = FALSE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51523687/

24 4 0