【问题标题】:R loop with get function with different parameter具有不同参数的get函数的R循环
【发布时间】:2016-10-17 22:55:41
【问题描述】:

我从以下网址创建数据框,

因为我有几个站点,我需要为每个站点运行这个脚本(例如在附件示例站点 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 的新手

【问题讨论】:

    标签: r loops assign


    【解决方案1】:

    您需要先创建您的对象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 =',')
    )
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 2011-05-30
      • 2014-12-04
      • 1970-01-01
      • 2011-11-03
      • 2019-08-01
      相关资源
      最近更新 更多