经过一些麻烦,我成功安装了rpy2。
我的目标是构建模型(gam;Simon Wood的库mgcv)并使用预测功能,通过将pandas数据框从Python传递到R中的gam模型,并检索预测结果。
通过加载txt文件并通过与Python/rpy2脚本调用的相同的R函数对其进行处理,测试了R脚本,它运行良好。在Python脚本中,我从文本文件的pickled版本开始(就像我在最终代码中一样,从pandas数据框开始)。
我还能够触发R脚本中的其他有意义的错误(传递一个空数据框或缺少一列的数据框以成功执行预测都会触发错误,正如在R中一样)。我实际上已经输入数据进入到了gam函数。
我已经接近完成,但我仍然遇到这个错误:
ExtractData(object, data, NULL)中的错误: 'names'属性[1]必须与向量[0]的长度相同
我不知道如何在我的Python脚本中获取更多来自R的反馈。我该如何调试?或者有人可以指出R中可能存在的问题吗?或者这是我没有完全掌握的“.convert_to_r_dataframe()”函数的一部分吗?
我的目标是构建模型(gam;Simon Wood的库mgcv)并使用预测功能,通过将pandas数据框从Python传递到R中的gam模型,并检索预测结果。
通过加载txt文件并通过与Python/rpy2脚本调用的相同的R函数对其进行处理,测试了R脚本,它运行良好。在Python脚本中,我从文本文件的pickled版本开始(就像我在最终代码中一样,从pandas数据框开始)。
我还能够触发R脚本中的其他有意义的错误(传递一个空数据框或缺少一列的数据框以成功执行预测都会触发错误,正如在R中一样)。我实际上已经输入数据进入到了gam函数。
我已经接近完成,但我仍然遇到这个错误:
ExtractData(object, data, NULL)中的错误: 'names'属性[1]必须与向量[0]的长度相同
我不知道如何在我的Python脚本中获取更多来自R的反馈。我该如何调试?或者有人可以指出R中可能存在的问题吗?或者这是我没有完全掌握的“.convert_to_r_dataframe()”函数的一部分吗?
f_clean_data <- function(df) {
t = df
... some preprocessing
t
}
tc <- f_clean_data(t)
f_py_gam_predict <- function(gam, df) {
dfc = f_clean_data(df)
result <- predict(gam, dfc)
result
}
bc_gam = gam(BC ~
+s()
.... some gam model
, data=tc, method="REML"
)
summary(bc_gam)
testfile = 'a_test_file.txt'
ttest <- read.table(file=testfile ,sep='\t',header=TRUE);
result = f_py_gam_predict(bc_gam, ttest)
f_py_gam_predict 可在 Python 脚本中使用。
谢谢, Luc
convert_to_r_dataframe
中存在问题,这使我必须为 pandas 进行转换(随 rpy2 一起提供,从版本 2.3.4 开始),但我也听说convert_to_r_dataframe
在此期间已经得到修复。 - lgautier