使用' transformFunc'时对rxDataStep的问题

时间:2018-03-07 02:33:56

标签: r microsoft-r

以下R代码是向数据集添加一列并返回data.frame。

xdfAirDemo <- RxXdfData(file.path(rxGetOption("sampleDataDir"),  "AirlineDemoSmall.xdf"))

我添加了一个打印功能来检查矢量的长度。

f.append <- function(lst){
  lst$mod_val_test <- rep(1, length(lst[[1]]))
  print(length(lst$mod_val_test))
  return(lst)
}

df.Airline <- rxDataStep(inData = xdfAirDemo, transformFunc = f.append)

当我运行上面的rxDatastep时,&#39; f.append&#39;中的打印功能函数执行两次并输出两个值。有人可以帮我理解rxDatastep的工作原理吗?

结果如下所示。 [1] 10

[1] 600000

行读取:600000,已处理总行数:600000,总块时间:0.651秒

1 个答案:

答案 0 :(得分:0)

当您致电rxDataStep时,它实际上会在前10行数据上运行您的代码作为测试。如果成功,则会一次处理整个数据集一个块。

如果您不希望在测试运行中执行代码,则可以检查.rxIsTestChunk内置变量的值:

f.append <- function(lst)
{
    # don't print anything if this is the test chunk
    if(.rxIsTestChunk)
        return(NULL)

    lst$mod_val_test <- rep(1, length(lst[[1]]))
    print(length(lst$mod_val_test))
    return(lst)
}