代码之家  ›  专栏  ›  技术社区  ›  Mark

嵌套lappy的索引编号

  •  0
  • Mark  · 技术社区  · 8 年前

    我试图理解如何在两个列表上访问嵌套Lappy函数的外部迭代索引。

    虚框:假设我在这里有一个包含2项的列表,在这里有一个包含3项的列表,并使用一个嵌套的lappy来生成变量item1\ux、item1\uy、item1\uz等。 在我正在编写的代码中,我试图访问迭代索引,这是我可以为父级的内部lappy做的。frame()$i[],但如何访问外部迭代索引?

    目标:我想在代码通过外lappy时打印1、2 当代码通过内部搭接时打印1、2、3 因此也可以打印外索引乘以内索引,即1,2,3,4,5,6

    我正在寻找一个与父级类似的代码段。frame()$i[]访问外部迭代索引(如果存在的话),也可以更好地理解它是如何工作的,但老实说,任何其他解决方案当然都是好的

    mylist <- c("item1", "item2")
    
      lapply(mylist, function(y) {
             lapply(c("x", "y", "z"), function(x) {
                print(parent.frame()$i[])
    ### access index number of outer lapply here somehow. 
    ###   index 1 * index 2 should be giving a print(...) of 1:6 than...
    
            })})
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   CPak    8 年前

    以下是几种方法

    使用 mapply

    mapply(function(y, z) {
                    lapply(c("x", "y", "z"), function(x) {
                                                print(paste(y, x))
                                                print(z)
                                            })
            }, 
            mylist, 
            seq_along(mylist))
    

    或仅限 lapply

    lapply(seq_along(mylist),   function(y) {
                                    lapply(c("x", "y", "z"), function(x) {
                                                                print(paste(mylist[y], x))
                                                            })
                                })