r语言 - 按最后一个元素匹配向量



我想知道如何将向量列表连接到 data.frame 或仅连接到向量以将新项目附加到每个向量并匹配。

# list of vectors that should be extended with values from vp
# based on last item match to vc
lst <- list(c("a", "b", "c"), 
        c("b", "d"), 
        c("f", "e")
   )
vc <- c("c", "c", "d")
vp <- c("k", "l", "m")
# expected output:
expect <- list (c("a", "b", "c", "k"), 
                c("a", "b", "c", "l"), 
                c("b", "d", "m"), 
                c("f", "e"))

值得注意的是,如果lst中的最后一项与vc中的几个值匹配,则向量是重复的。如果 Vector 与 vc 中的值不匹配,则矢量保持不变

试试这个:

L <- lapply(lst, function(v) vp[vc %in% v[length(v)]])
pv <- function(v1, v2) {
      if (length(v2) == 0) {
        list(v1)
      }
      else {
        lapply(v2, function(v) c(v1,v))
      }
}
L2 <- mapply(pv, lst, L)
unlist(L2, recursive=F)

这是我的解决方案:

l=lapply(lst, function(v) vp[vc %in% v])
res=sapply(1:length(lst), function(i) 
        {
            x=lst[[i]]
            y=l[[i]]
            if (length(y)>0)
                sapply(1:length(y), function(j)  list(c(x, y[j])))
            else
                list(x)
        }
    )
unlist(res, recursive = FALSE)

相关内容

  • 没有找到相关文章

最新更新