【发布时间】:2021-06-28 06:12:27
【问题描述】:
我正在尝试根据另一个列表更改列表的逻辑值(元素)。基本上,如果两个列表都是“TRUE”,我想将主列表中的值更改为“FALSE”。两个列表的长度都是 5。例如
List_A <- list(c(TRUE,FALSE,TRUE),c(FALSE,TRUE,TRUE),c(FALSE,FALSE,FALSE),c(TRUE,TRUE,TRUE),c(TRUE,FALSE,TRUE))
List_B <-list(c(FALSE,FALSE,FALSE),c(TRUE,TRUE,FALSE),c(TRUE,TRUE,TRUE),c(FALSE,FALSE,TRUE),c(FALSE,TRUE,TRUE))
列表 B 具有序列作为名称属性。
期望的输出:
Output <-
list(c(TRUE,FALSE,TRUE),c(FALSE,FALSE,TRUE),c(FALSE,FALSE,FALSE),c(TRUE,TRUE,FALSE),c(TRUE,FALSE,FALSE))
换句话说,listA 中的元素保持不变,除非它们在两个列表中都有匹配的 TRUE 值,这会将它们替换为 FALSE。 我已经尝试运行下面的 for 循环,但它不起作用,我不知道如何重定向输出,如果这样做的话。
for(i in 1:length(List_A)) { List_A[[i]][List_B[[i]]] <- FALSE }
【问题讨论】:
-
是否有理由不将这些列表转换为矩阵?这样就没有必要使用循环了(
Map也是一个循环)。 -
谢谢!地图功能很好用。我有一个下游函数,它要求输入是列表,这就是我像这样使用它们的原因
标签: r list function nested-loops