使用for循环在列表中追加列表

使用for循环在列表中追加列表,r,R,我是R的初学者,我面临一个相当简单的问题。我需要使用下面给出的数据以迭代方式创建一个列表列表 # First Vertical layer P01<- list("S17","S18") P02<- list("S1","S2") P03<- list("S3","S4") P1 <- list(P01, P02, P03) # Second Vert

我是R的初学者,我面临一个相当简单的问题。我需要使用下面给出的数据以迭代方式创建一个列表列表

# First Vertical layer
P01<- list("S17","S18")
P02<- list("S1","S2")
P03<- list("S3","S4")

P1 <- list(P01, P02, P03)
# Second Vertical layer
P2 <- list("S22","S11","S12")
#第一个垂直层

P01A一衬基R溶液

lapply(P1, function(x) lapply(P2, function(y) c(unlist(x), y)))

如果顺序无关紧要,您可以使用
expand.grid
,然后
unlist
将结果显示在
lappy

x <- lapply(asplit(expand.grid(P1, P2), 1), function(x) as.list(unlist(x)))
x[1:2]
#[[1]]
#[[1]]$Var11
#[1] "S17"
#
#[[1]]$Var12
#[1] "S18"
#
#[[1]]$Var2
#[1] "S22"
#
#
#[[2]]
#[[2]]$Var11
#[1] "S1"
#
#[[2]]$Var12
#[1] "S2"
#
#[[2]]$Var2
#[1] "S22"

x这并没有给出OP想要的解决方案。他想要所有的组合。i、 e.S17、S18、S22;S17、S18、S11等等,阿里,我需要所有的组合。@阿里,对,我没注意到。谢谢,我会修改答案。这同样有效,但不幸的是,订单确实很重要,因为这是一条生产线。非常有创意,祝贺你,我永远不会提醒自己
asplit(,1)
。如果订单不重要,一个简单的方法是:
purr::cross2(P1,P2)%%>%map(unlist,recursive=FALSE)
lapply(P1, function(x) lapply(P2, function(y) c(unlist(x), y)))
x <- lapply(asplit(expand.grid(P1, P2), 1), function(x) as.list(unlist(x)))
x[1:2]
#[[1]]
#[[1]]$Var11
#[1] "S17"
#
#[[1]]$Var12
#[1] "S18"
#
#[[1]]$Var2
#[1] "S22"
#
#
#[[2]]
#[[2]]$Var11
#[1] "S1"
#
#[[2]]$Var12
#[1] "S2"
#
#[[2]]$Var2
#[1] "S22"
x <- lapply(asplit(rev(expand.grid(P2, P1)), 1), function(x) as.list(unlist(x)))
x[1:2]
#[[1]]
#[[1]]$Var21
#[1] "S17"
#
#[[1]]$Var22
#[1] "S18"
#
#[[1]]$Var1
#[1] "S22"
#
#
#[[2]]
#[[2]]$Var21
#[1] "S17"
#
#[[2]]$Var22
#[1] "S18"
#
#[[2]]$Var1
#[1] "S11"