具有不同参数的get函数的R循环

R loop with get function with different parameter

我从以下 url,

创建数据框

因为我有几个站点,所以我需要为每个站点 运行 这个脚本(例如在附件示例站点 1 和 41 中),然后将它们全部绑定到一个

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 之间的任何内容创建空元素,因此使用 assign 会更简洁,为每个站点创建一个新对象。

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 =',')
)
}