2
我剛剛在幾年之後跳回R的土地,並遇到了一個問題,通過循環與sqlSave傳遞變量。我已經讓RODBC在Win7上運行MySQL並順利運行,但似乎無法讓我的循環正常工作。以下是我正在試圖完成什麼樣的數據我有什麼:R sqlSave字符串變量循環問題
- MLB播放,通過播放數據,2012年使用保存爲一個「價值」被稱爲「mlb12」多個表的pitchRX庫
- 「mlb12」裏面有七個表格(atbat,pitch,game,player,runner,nmpire,coach)
- 我想創建一個循環,爲R中的每個表創建一個數據框,通過一個循環與他們通過sqlSave插入到我的MySQL數據庫
- 我已經把所有這些表插入到我的MySQL數據庫,但我做到了「長」的方式(即宣佈每個D F和爲每個插入創建一個sqlSave語句),並希望在兩個循環中執行它們以清理代碼。
- 下面是我目前有湊這個數據,並將其插入到MySQL數據庫的代碼:
library(RODBC)
library(pitchRx)
mlb12 <- scrapeFX(start = "2012-04-05", end = "2012-04-07",
tables=list(atbat=fields$atbat,pitch=fields$pitch,
game=fields$game,player=fields$player,
runner=fields$runner,umpire=fields$umpire,
coach=fields$coach))
atbat <- mlb12$atbat
pitch <- mlb12$pitch
game <- mlb12$game
player <- mlb12$player
runner <- mlb12$runner
umpire<- mlb12$umpire
coach <- mlb12$coach
channel <- odbcConnect("db", uid = "cs", pwd = "pw")
sqlSave(channel,mlb12$atbat,tablename="atbat")
sqlSave(channel,mlb12$pitch,tablename="pitch")
sqlSave(channel,mlb12$game,tablename="game")
sqlSave(channel,mlb12$player,tablename="player")
sqlSave(channel,mlb12$runner,tablename="runner")
sqlSave(channel,mlb12$umpire,tablename="umpire")
sqlSave(channel,mlb12$coach,tablename="coach")
close(channel)
,我已經試着寫的循環,一方面設立一個數據幀並簡化sqlSave語句,都無法正確執行。這裏有一個我試過,我認爲會工作的一個例子:
i<-0
while (i<6) {
i<-i+1
a<-c("atbat","pitch","game","player","runner","umpire","coach")
b<-paste("mlb12$",a,sep="")
c[[i]]<-paste("test",i,sep="")
}
這個循環的問題是,我不記得如何(或想出如何)使用C [I]]增量字段取「b」值爲列表中的每個表創建數據框。我相當肯定,如果我能解決這個問題我可以得到一個循環工作的「sqlSave」部分。有沒有辦法做我想用autoincremental字段(或基於第二個列表的字段)做什麼?
我做了一個小編輯(放在循環通道),並得到了它完美的工作。萬分感謝,我知道必須有一個簡單的方法來做到這一點。 lapply(a,function(x){channel <-odbcConnect()){a <-c(「atbat」,「pitch」,「game」,「player」,「runner」,「 (channel,mlb12 [[x]],tablename = x,append = TRUE)close(channel)})'sqlSave(「db」,uid =「uid」,pwd =「pw」) ' – 2013-04-10 17:59:31