我有一个巨大的data.table,我想创建一个函数,其中包括DT
的子集,比如保持行col.a
超过4。
我咨询了vignettes和帮助文件,但我似乎没有提出解决方案。
set.seed(1)
DT <- data.table(col.a = 1:5, col.b = rev(11:15), col.c = rnorm(5))
remove.low.alphas.and.create.col.d <- function(my.datatable){
my.datatable[, col.d := col.b + col.c]
subset(my.datatable, col.a >= 4)
# my.datatable[col.a >= 4] # and other failed attempts...
# my.datatable <- my.datatable[col.a >= 4]
# my.datatable <- subset(my.datatable, col.a >= 4)
# my.datatable
# setDT(my.datatable)[col.a >= 4]
}
DT
# col.a col.b col.c
# 1: 1 15 -0.6264538
# 2: 2 14 0.1836433
# 3: 3 13 -0.8356286
# 4: 4 12 1.5952808
# 5: 5 11 0.3295078
运行后
remove.low.alphas.and.create.col.d(my.datatable = DT)
# col.a col.b col.c col.d
# 1: 4 12 1.5952808 13.59528
# 2: 5 11 0.3295078 11.32951
DT
保持不变。
DT
# col.a col.b col.c col.d
# 1: 1 15 -0.6264538 14.37355
# 2: 2 14 0.1836433 14.18364
# 3: 3 13 -0.8356286 12.16437
# 4: 4 12 1.5952808 13.59528
# 5: 5 11 0.3295078 11.32951
我可以使用DT <- remove.low.alphas.and.create.col.d(my.datatable = DT)
,但我不想。我希望一切都在函数内部发生。