我在R中有以下for循环来从4个My SQL表中提取数据。数据帧长度指的是
for (i in length(dataframe)){
sql1 <- paste("SELECT T.TenantLookupID, T.TenantShortCode,
B.BusinessUnitShortCode, C.CampaignShortCode
from TenantLookup AS T
JOIN BusinessUnitLookup AS B ON T.TenantLookupID = B.TenantLookupID
JOIN CampaignLookup AS C ON C.TenantLookupID = B.TenantLookupID
where T.TenantID = '611c5d1c_f0bc_4bd4_b1c1_f6800d50fc34' AND B.BusinessUnitID = 0
AND C.CampaignID =", i,sep="")
dataframe2<-dbGetQuery(jobdbconn, sql1)}
代码应该产生30个值 然而,它产生的价值要少得多。有人可以提出解决方案
TenantLookupID TenantShortCode BusinessUnitShortCode CampaignShortCode
1 572 NOn w uvn
2 572 NOn w Mxc
3 572 NOn w W0H
4 572 NOn w qr5
5 572 NOn w ABy
格式正确但数量远低于预期
答案 0 :(得分:1)
这不是一个范围,只有一个值:
for (i in length(dataframe)) {
对于从1到长度(数据帧)的所有值,请使用:
for (i in 1:length(dataframe)) {
修改强>
此外,在循环结束时,您每次都会覆盖结果数据框。也许
dataframe2<-dbGetQuery(jobdbconn, sql1)
应该是
dataframe2<-rbind(dataframe2, dbGetQuery(jobdbconn, sql1))
这样的事情:
dataframe2 <- data.frame()
for (i in length(dataframe)){
sql1 <- paste("SELECT T.TenantLookupID, T.TenantShortCode,
B.BusinessUnitShortCode, C.CampaignShortCode
from TenantLookup AS T
JOIN BusinessUnitLookup AS B ON T.TenantLookupID = B.TenantLookupID
JOIN CampaignLookup AS C ON C.TenantLookupID = B.TenantLookupID
where T.TenantID = '611c5d1c_f0bc_4bd4_b1c1_f6800d50fc34' AND B.BusinessUnitID = 0
AND C.CampaignID =", i,sep="")
dataframe2<-rbind(dataframe2, dbGetQuery(jobdbconn, sql1)}
HTH