【发布时间】:2018-12-22 06:50:53
【问题描述】:
我想使用data.table 将多个模型存储在一个列中。我目前正在一个一个地创建模型,并希望使用循环来存储它们。因此,我将不得不初始化一列空列表,用于存储封装在list 中的每个模型对象。我找到了一种适用于此目的的语法(见下文),但我认为可能有更优雅/简洁的版本(或完全不同的方法),也许也使用引用赋值。
旁注:由于创建每个单独的模型可能会使用大量内存,因此我无法在一次调用中执行此操作,该调用会一次通过引用将所有模型分配给列 - 因此,需要一个循环。至少,这是我的理解,如果我错了,请纠正我。
ids = c(1,2)
DT = data.table(id = ids, x = rep(list(), length(ids)))
# assigning by reference returns an error (just for info)
DT[1, x:= list(c(2,3))]
# subsetting the list does what is desired
for (i in ids) {
DT[i, "x"][[1]] = list(rep(i, 2)*3)
}
DT
# id x
# 1: 1 3,3
# 2: 2 6,6
【问题讨论】:
标签: r list data.table