0

我正在使用以下代码

ORT<-sqlQuery(channel, "Select ort FROM test")
ORT<-ORT[,c("ort")]
ORT<-as.list(ORT)
ORT <- parLapply(cl,ORT,function(ORT) cleanup(ORT))
sqlSave(channel, ORT,tablename="table_name1")

首先,我将 Sql 数据库的一列加载到 R 中,效果很好。接下来是我想使用并行包运行一个函数。第一个问题来了,ORT 需要是字符向量,但 Sql 将向量作为数据框导入。有什么快速转换的方法吗?由于向量包含 1000 万个条目。

下一个问题是:如何将数据向量保存回数据库,我的sqlSave命令不起作用!

4

1 回答 1

0

当你这样做时ORT<-ORT[,c("ort")],我怀疑 R 正在分配新内存并复制ORT$ort. 如果您只是保留数据框并传递ORT$ort给,parLapply那么您可以跳过此步骤。(另请注意,您不需要该as.list步骤。 parLapply接受向量。)

如果这是您分析的缓慢部分,我会感到惊讶。读取和写入数据库通常比分配新向量花费更长的时间。

如果您希望将结果作为向量以便使用 withsqlSave然后使用parSapply而不是parLapply.

于 2013-11-11T11:57:58.683 回答