我从以下网址创建数据框,
由于我有多个站点,因此我需要为每个站点运行此脚本(例如在附加示例站点 1 和 41 中),然后将所有站点绑定(bind)到一个
LS_Bellaboo_Token <- xxx
url_signature_orders_report <- "https://ran-reporting.rakutenmarketing.com/en/reports/signature-orders-report/filters?include_summary=Y&tz=GMT&date_type=transaction"
from <- Sys.Date()-39
to <- Sys.Date()-1
site <- 1
LinkShare_Report_1 <-
read.csv(text=rawToChar(
GET(url_signature_orders_report,
query=list(token=LS_Bellaboo_Token,
start_date=from,
end_date=to,
network=site))
[["content"]]),skip = 4, header = TRUE, sep =',')
if (length(LinkShare_Report_US$X..of.Items)>0 )
{LinkShare_Report_US["site"] <-"US"}
site <- 41
LinkShare_Report_41 <-
read.csv(text=rawToChar(
GET(url_signature_orders_report,
query=list(token=LS_Bellaboo_Token,
start_date=from,
end_date=to,
network=site))
[["content"]]),skip = 4, header = TRUE, sep =',')
if (length(LinkShare_Report_US$X..of.Items)>0 )
{LinkShare_Report_US["site"] <-"US"}
我想创建循环,而不是为每个站点重复它们。
我正在尝试以下脚本
site <-c(1,41)
for (i in site){
LinkShare_Report_[i] <-
read.csv(text=rawToChar(
GET(url_signature_orders_report,
query=list(token=LS_Bellaboo_Token,
start_date=from,
end_date=to,
network=site))
[["content"]]),skip = 4, header = TRUE, sep =',')
}
但这对我不起作用,我是 R 新手
最佳答案
您需要首先创建对象LinkShare_Report_
。
LinkShare_Report_ <- list()
然后就可以运行了
site <- c(1,41)
for (i in site){
LinkShare_Report_[i] <-
read.csv(text=rawToChar(
GET(url_signature_orders_report,
query=list(token=LS_Bellaboo_Token,
start_date=from,
end_date=to,
network=i))
[["content"]]),skip = 4, header = TRUE, sep =',')
}
由于列表会为 1 到 41 之间的任何内容创建空元素,因此使用分配会更加简洁,为每个站点创建一个新对象。
site <- c(1,41)
for (i in site){
assign(paste0('site',i),
read.csv(text=rawToChar(
GET(url_signature_orders_report,
query=list(token=LS_Bellaboo_Token,
start_date=from,
end_date=to,
network=i))
[["content"]]),skip = 4, header = TRUE, sep =',')
)
}
关于具有不同参数的 get 函数的 R 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37858928/