【发布时间】:2018-12-02 04:13:56
【问题描述】:
我想在末尾附加(“rbind”)一个 data.table 对象 函数中的另一个 data.table 对象 不返回组合结果 但直接附加到第一个数据表对象 这样我就不必分配函数结果 再次到第一个data.table。
由于 data.table 是作为函数参数通过引用传递的
有可能,但rbind 和rbindlist 总是创建
一个新的结果对象,而不是附加到现有的 data.table 对象。
我该怎么做?
library(data.table)
dt1 <- data.table(a = 1, b = "hello")
dt2 <- data.table(a = 2, b = "world")
dt.all <- data.table::rbindlist(list(dt1, dt2))
dt.all
# a b
# 1: 1 hello
# 2: 2 world
dt.append <- function(x1, x2) {
x1 <- data.table::rbindlist(list(x1, x2)) # does not change the outer data.table!
invisible()
}
dt.append(dt1, dt2)
dt1 # I would like to see both rows here
# a b
# 1: 1 hello
【问题讨论】:
-
您正在分配给“x1”,即在本地范围内。
<-的 lhs 上的对象按字面意思理解为“x1”。可能你需要assign -
您得到的不是通过引用/就地编辑表进行修改——而是一个新表绑定到与原始表相同的符号/名称。
-
@Frank 是的,你是绝对正确的,我只是重复使用符号名称来解决我的问题。我不知道任何可以直接附加到现有
data.table的data.table函数 - 欢迎任何提示。我认为这值得提出更改请求。 -
是的,这将是一个很酷的功能。我不太了解内部结构,无法知道为什么没有(据我所知)要求。 Fwiw,通过引用删除行在这里:github.com/Rdatatable/data.table/issues/635
标签: r data.table