【发布时间】:2019-01-22 11:15:02
【问题描述】:
我的问题是在将多个列分配给 data.table 时代码的易错性/可维护性。
我有一个返回 data.table 的函数,如下所示:
f <- function(x)
{
# perform some complicated operations on x yielding multiple results
data.table(col1 = my_result_1, col2 = my_result_2)
}
我正在对另一个 data.table 的行组应用此函数,并将结果添加为新列(或更新已存在的列):
dt <- data.table(x = 1 : 4, id = c(1,1,2,2))
# x id
# 1: 1 1
# 2: 2 1
# 3: 3 2
# 4: 4 2
dt[, c('col1', 'col2') := f(x), by = id]
从技术上讲,这很好用。但是,我想知道是否有一种优雅的方法可以避免在 := 的 LHS 上再次指定 f() 中生成的列名。
【问题讨论】:
-
这对我来说有点不清楚。通常,如果您使用
:=,则必须指定要分配的列名。你如何决定新列的名称?您是否将它们存储在可以使用的某个向量中? -
名称在 f() 中生成的 data.table 中。我在其他任何地方都没有它们。问题是,如果我更改 f() 中的任何内容(例如向结果 data.table 添加新列),我需要确保相应地更新 f() 的调用,这是引入错误的潜在来源.
-
Fwiw,我在这个(我认为)相关问题上添加了一条评论:github.com/Rdatatable/data.table/issues/…
标签: r data.table names