我试图了解如何通过2个列表访问嵌套lapply函数的外部迭代索引。
虚拟案例:假设我在这里有2个项目的列表,并且有3个项目,并使用嵌套的lapply来创建变量item1_x,item1_y,item1_z等。 在我正在编写的代码中,我尝试访问迭代索引,我可以使用parent.frame()$ i []来进行内部lapply,但是如何访问外部迭代索引?
目标:当代码通过外部lapply时,我想打印1,2 当代码通过内部lapply时打印1,2,3 因此也能够打印外部索引时间内部索引,i,e 1,2,3,4,5,6
我正在寻找类似于parent.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...
})})
答案 0 :(得分:1)
以下是一些方法
使用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))
})
})