基于2个列表的匹配创建数据帧

时间:2016-07-28 18:21:12

标签: r loops updating

我有两个列表(这些列表中的一列或多列也是一个列表)我只匹配列名匹配的值。然后基于匹配,我想将值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)
}

0 个答案:

没有答案