gpt4 book ai didi

mysql - R sqlSave 字符串变量循环问题

转载 作者:行者123 更新时间:2023-11-29 02:28:58 25 4
gpt4 key购买 nike

几年后,我刚刚回到 R 领域,遇到了通过 sqlSave 循环传递变量的问题。我已经启动了 RODBC,并在 Win7 机器上使用 MySQL 顺利运行,但似乎无法让我的循环工作。这是我拥有的数据以及我要完成的任务:

  • 2012 年 MLB 逐场比赛数据使用 pitchRX 库保存为一个名为“mlb12”的单个“值”,包含多个表
  • “mlb12”里面有七张 table (击球、投球、比赛、球员、跑垒员、裁判、教练)
  • 我想创建一个循环,为 R 中的每个表创建一个数据框,这样我就可以使用 sqlSave 将它们通过一个循环,将它们插入到我的 MySQL 数据库中
  • 我已经将所有这些表插入到我的 MySQL 数据库中,但我采用了“长”方式(即声明每个 DF 并为每个插入创建一个 sqlSave 语句)并且更愿意在两个循环中执行它们以清理上代码。
  • 下面是我目前必须抓取此数据并将其插入 MySQL 数据库的代码:


库(RODBC)



库(pitchRx)

mlb12 <- scrapeFX(开始 = “2012-04-05”,结束 = “2012-04-07”,
表=列表(atbat=fields$atbat,pitch=fields$pitch,
游戏=字段$游戏,玩家=字段$玩家,
赛跑者=场$赛跑者,裁判=场$裁判,
教练=字段$教练))

atbat <- mlb12$atbat
球场 <- mlb12$球场
游戏 <- mlb12$ 游戏
玩家 <- mlb12$玩家
runner <- mlb12$ runner
裁判<- mlb12$裁判
教练 <- mlb12$教练

channel <- odbcConnect("db", uid = "cs", pwd = "pw")
sqlSave( channel ,mlb12$atbat,表名=“atbat”)
sqlSave( channel ,mlb12$音高,表名=“音高”)
sqlSave( channel ,mlb12$游戏,表名=“游戏”)
sqlSave( channel ,mlb12$播放器,表名=“播放器”)
sqlSave(channel,mlb12$runner,tablename="runner")
sqlSave( channel ,mlb12$裁判,表名=“裁判”)
sqlSave( channel ,mlb12$教练,表名=“教练”)
关闭( 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”部分的循环。有没有办法做我想用自动增量字段(或基于第二个列表的字段)做的事情?

最佳答案

你可以像这样使用 lapply :

channel <- odbcConnect("db", uid = "cs", pwd = "pw")
a<-c("atbat","pitch","game","player","runner","umpire","coach")
lapply(a,function(x)
sqlSave(channel,mlb12[[x]],tablename=x)
close(channel)

关于mysql - R sqlSave 字符串变量循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15913583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com