私は R での単純な実装の経験は豊富ですが、R を介した SQL との通信や並列プログラミングは初めてです (今日まで、これら 2 つのことの経験はありません)。ブログやフォーラムなどからのプロンプトを使用して、以下のコードを作成しました。
library(doParallel)
library(RMySQL)
library(DBI)
library(foreach)
cl <- makeCluster(12)
registerDoParallel(cl)
Postcodecsv <- read.csv("C:/Users/Henry Crosby/Desktop/PostcodeLatLong.csv")
mydb = dbConnect(MySQL(), user='****', password="******* ****",
dbname='population_distance', host='****.**.*.*')
dbListFields(mydb,'Postcodes')
foreach (a = 1:120000, .combine="rbind") %dopar% {
Done <- dbGetQuery(mydb, paste("select FID, Postcode2, (6371 * acos( cos(
radians( ",Postcodecsv[a,6],"))*cos(radians(latitude))*cos(radians(Longitude)-radians(",Postcodecsv[a,5],"))+sin(radians(",Postcodecsv[a,6],") )* sin( radians( latitude ) ) ) ) AS distance from Postcodes having distance < 2 ORDER BY distance",sep=" "))
write.table(Done,file="C:/Users/Henry Crosby/Desktop/2km.csv",append=TRUE, col.names=FALSE, sep=",")
}
この計算は for ループで機能しますが、永遠に時間がかかります (これを大きなデータセットに適用する必要があります!)。上記のコードを実行すると、以下のエラーが発生します。エラーが発生する理由と、それを回避する方法を教えてください。
{ のエラー: タスク 1 が失敗しました - 「関数 "dbGetQuery" が見つかりませんでした」