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

标签 mysql r loops rodbc

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

  • 使用itchRX库将2012年MLB逐场比赛数据保存为一个名为“mlb12”的单个“值”,并具有多个表
  • “mlb12”内部有七个 table (atbat、pitch、game、player、runner、umpire、coach)
  • 我想创建一个循环,为 R 中的每个表创建一个数据框,这样我就可以使用 sqlSave 将它们传递到循环中,将它们插入到我的 MySQL 数据库中
  • 我已经将所有这些表插入到我的 MySQL 数据库中,但我采用了“长”方式(即声明每个 DF 并为每个插入创建一个 sqlSave 语句),并且更愿意在两个循环中进行清理上代码。
  • 下面是我目前必须抓取这些数据并将其插入 MySQL 数据库的代码:

库(RODBC)

<前>库(pitchRx) mlb12 <- scrapeFX(开始 = "2012-04-05", 结束 = "2012-04-07", 表=列表(atbat=字段$atbat,音调=字段$音调, 游戏=字段$游戏,玩家=字段$玩家, 运行者=田野$运行者,裁判员=田野$裁判员, 教练=场$教练)) atbat <- mlb12$atbat 音高 <- mlb12$音高 游戏 <- mlb12$游戏 球员 <- mlb12$球员 运行者 <- mlb12$runner 裁判<- mlb12$裁判 教练 <- mlb12$教练 channel <- odbcConnect("db", uid = "cs", pwd = "pw") sqlSave( channel ,mlb12$atbat,表名=“atbat”) sqlSave( channel ,mlb12$pitch,表名=“pitch”) sqlSave( channel ,mlb12$游戏,表名=“游戏”) sqlSave( channel ,mlb12$玩家,表名=“玩家”) sqlSave( channel ,mlb12$runner,表名=“runner”) sqlSave( channel ,mlb12$umpire,表名=“umpire”) 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/

相关文章:

r - 在 R 中生成随机数量的缺失值

python - 如何在 for 循环中从列表中赋值

python - 同时对三个变量数组进行for循环

javascript - .map 数据库查询中的多个条目

mysql - 如何解决错误 "Foreign key constraint is incorrectly formed"

mysql - MySQL可以拆分列吗?

r - "Error in table(pred = prediction, true = W[, 8]) : all arguments must have the same length"

r - 如何获取数据关系并根据 R 中的这些关系将数据组装成组?

c# - MYSQL 插入很慢

MySQL binlog读取