强制求值data.table或如何从函数返回data.table

时间:2016-12-02 15:07:52

标签: r data.table

我有一个函数可以使用:= - 运算符将XML文档解析为data.table。当我从解析器函数返回data.table时,第一次调用结果时没有显示任何内容,只有第二次调用才会创建我想要的输出。

我怀疑它与data.table评估作业的方式有关。我现在的问题是:如何避免第一个空调用(也就是说,如何强制data.table来计算表达式)?

举一个小例子:

my_fun <- function() {
  dt <- data.table(x = 1) 
  dt[, y := 2]
  return(dt)
}

my_dt <- my_fun()

my_dt
# ... nothing happens

my_dt
# x y
# 1: 1 2

一种可能的解决方案是在函数内调用copy,但我不确定这是否是data.table-处理方式(关于速度和内存使用)。一个例子是:

my_fun2 <- function() {
  dt <- data.table(x = 1)
  dt[, y := 2]
  dt <- copy(dt)
  return(dt)
}

my_dt2 <- my_fun2()
my_dt2
# x y
# 1: 1 2

0 个答案:

没有答案