如何从函数内部对R data.table进行子集化?

时间:2016-06-05 15:41:32

标签: r data.table

我有一个巨大的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),但我不想。我希望一切都在函数内部发生。

0 个答案:

没有答案