我使用RevoScaleR,我想在现有表中添加一个新列。据我所知,有一个rxDataStep函数,可以使用transformFun参数传递一个函数。
我写了一个例子:
library(tidyverse)
set.seed(1)
N = 250
dataList <- data.frame(pvm_date = c(rep(2000,N),rep(2001,N),rep(2002,N)),
pHat = sample(c(0.1, 0.2, 0.3), N*3, replace = T),
DefaultInd_old = rbernoulli(3*N, 0.5)*1)
myFun = function(dataList){
tmp = dataList %>% group_by(pvm_date, pHat) %>% summarize(Obs = n(), ODR = sum(DefaultInd_old)/n()) %>%
group_by(pHat) %>% summarize(meanODR = mean(ODR))
dataList$ODR = left_join(dataList, tmp, by = "pHat") %>% select('meanODR')
return(dataList)
}
tmp = rxDataStep(inData = dataList, transformFunc = myFun)
当我运行此命令时,出现以下错误消息:
错误:用于分析的样本数据集没有变量。 在文件CxAnalysis.cpp中捕获到异常,行:3848。线程ID:11692重新抛出。 在文件CxAnalysis.cpp中捕获异常,行:5375。线程ID:11692重新抛出。 doTryCatch(return(expr),name,parentenv,handler)中的错误:
错误:用于分析的样本数据集没有变量。
在rxDataStep函数外部运行该函数,返回我想要的结果。
你能告诉我这是怎么回事吗?
预先感谢 丹尼尔