首页 文章

R循环以引用多个数据帧

提问于
浏览 1369
0

我正在尝试创建一个循环来从R中的多个数据帧中提取数据,然后将它们重新绑定到一个数据帧中 . 数据帧的名称相同,最后附加一个增量(split1,split2,split3 ...)以区分 .

每个数据框都包含一个数字列表,我希望将其附加到URL .

我到目前为止构建的循环如下:

requester_url <- "https://example.url/users/show_many/ids="
for(i in 1:7 {
  splitname <- paste0('split',i)
  requester_ids <- paste0(splitname, collapse = ",")
  requester_url <-paste0(requester_url,requester_ids)
}

如果我在循环中分解了我想要的元素,这可能会更有帮助 . 从下面的部分,我想创建一个新的变量,它是应用了增量的数据帧名称 .

splitname <- paste0('split',i)

我希望这会输出'split1,split2,split3 ......',然后在循环的下一部分中引用它 .

requester_ids <- paste0(splitname, collapse = ",")

这应该提取循环数据框名称中包含的数字,并用逗号分隔数字折叠 . 我知道崩溃是有效的,因为我在循环之外多次使用它 .

然后最后,循环的最后一部分应该采用url变量并追加上一行中拉出的所有id并结束为:“https://example.url/users/show_many/ids=11111,22222,33333 ....”

我认为问题出在第一行,它将数据框名称存储为字符,而不是变量名称 .

为了解决这个问题,我一直在为我的大脑进行最好的解决,但我对循环很新,这超出了我的技能水平 .

1 回答

  • 1

    正如您所指出的那样,问题是使用表的名称字符串,而不是表本身 . 您只需要“获取”即可使代码正常工作 .

    split1 <- 100:109
    split2 <- 200:209
    split3 <- 300:309
    split4 <- 400:409
    split5 <- 500:509
    split6 <- 600:609
    split7 <- 700:709
    requester_url <- "https://example.url/users/show_many/ids="
    for(i in 1:7) {
      splitname <- paste0('split',i)
      requester_ids <- paste0(get(splitname), collapse = ",")
      if (i>1) sep <- ',' else sep <- ''
      requester_url <- paste(requester_url,requester_ids,sep=sep)
    }
    

    但是更好的解决方案是根本不做任何循环:首先合并(rbind)7个数据集然后折叠结果 .

相关问题