我有两个列表(这些列表中的一列或多列也是一个列表)我只匹配列名匹配的值。然后基于匹配,我想将值TRUE或FALSE输出到DF。我在我的代码中使用了一个循环而忽略了第一列ID列。我提供了一些代码来重现示例和所需的输出,但我的脚本更具体到我的数据,因此您可以更好地了解我想要完成的任务。
List1 <- list(ID = 123, L1 = 89, L2 = 2, L3 = c(2.5, 3.5, 4))
List2 <- list(income = c(1,2,3,4,5), L1 = c(0,0,0,89,0), L10 = c(3,3,3,3,3),
L2 = c(2,55,55,55,55), L3 = c(2.5, 8, 8, 4, 8))
期望的结果: DF1
income L1 L10 L2 L3
1 0 0 1 1
2 0 0 0 0
3 0 0 0 0
4 1 0 0 1
5 0 0 0 0
我的代码:
NBPmatrix <- function(x){
nbp <- matrix(0, nrow = nrow(black), ncol = ncol(black))
colnames(nbp) <- names(black)
index <- nbp[, match(colnames(x), colnames(nbp), nomatch = 0)]
for(i in 2:length(nbp))
nbp[index] <- grepl(black[[i]], x[i], ignore.case = TRUE)
return(nbp)
}