【问题标题】:How to run a nested for loop for two lists in R?如何为 R 中的两个列表运行嵌套 for 循环?
【发布时间】:2019-09-15 00:50:13
【问题描述】:

我有两个列表代表 Domo 中的数据表,我正在使用 Domo API 检索它们:

id = list(1,2,3)
tablename = list(a,b,c)

我正在尝试通过 DomoR::fetch 函数获取数据并将它们命名为 R 中的数据帧。我该怎么做?我想是这样的?

for(x in id){
  for(y in tablename){
    y = DomoR::fetch(x)
  }
}

不使用 for 循环,这就是我想要的:

a<-DomoR::fetch(1)
b<-DomoR::fetch(2)
c<-DomoR::fetch(3)

【问题讨论】:

    标签: r list dataframe for-loop nested


    【解决方案1】:

    我对 DomoR 不熟悉,但是基于 cmets,没有可复现的例子,我认为这就是你所需要的

    id <- c(1,2,3)
    my.names <- c("a","b","c")
    
    tablename <- list()
    for(y in 1:length(my.names)){
        tablename[[y]] <-  DomoR::fetch(id[y])
    }
    
    names(tablename) <- my.names
    

    现在 tablename 的第一个元素将包含 table id "1" 中的元素,依此类推。 tablename 列表中的元素根据my.names 的名称命名。

    为了更简单的语法,我制作了 idmy.names 向量而不是列表。

    【讨论】:

    • 感谢您的帮助。这导致了一个包含 5 个相同数据帧的列表。我希望结果是获取由它们的 Domo 表 ID 标识的每个数据表,并用它们对应的名称命名它们。在这种情况下,表“a”将包含表 id “1”中的元素,依此类推。 Domo 只是存放数据,我正在尝试使用它们的 ID 提取这些表。
    • 现在更有意义了。让我修改我的答案
    • 我觉得这样比较接近,我只需要维护每个id的表名。例如,“a” = 包含 id 1 中的表内容的表,“b” = 包含 id 2 中的表内容的表。在我的脑海中,for 循环会读取:“for id in table id's and for name in table names: fetch data从表 id 并用对应的表名命名"
    • 这是您要找的吗?
    • 对不起,这不是我真正想要的。理想情况下,结果将是三个名为 a、b 和 c 的 R 数据帧,其中包含 Domo 中的数据表,分别由 id 的 1、2 和 3 表示。即 a
    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多