以下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秒
答案 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)
}