R 基于向量重叠从列表中删除元素并将其追加到列表中
我有一个大约500个模型对象的列表。这些对象的名称为v1:R 基于向量重叠从列表中删除元素并将其追加到列表中,r,list,append,subset,R,List,Append,Subset,我有一个大约500个模型对象的列表。这些对象的名称为v1: existing.list <- vector("list", 3) v1 <- names(existing.list) <- c("A", "B", "C") 我首先要删除v1中不在v2中的对象,然后附加到现有的。列出v2中所有新的、唯一的名称。 我可以用一种相当复杂的方式完成第一项任务: rm <- v1[!v1 %in% v2] rm.i <- which(v1 %in% rm) v1 <-
existing.list <- vector("list", 3)
v1 <- names(existing.list) <- c("A", "B", "C")
我首先要删除v1中不在v2中的对象,然后附加到现有的。列出v2中所有新的、唯一的名称。
我可以用一种相当复杂的方式完成第一项任务:
rm <- v1[!v1 %in% v2]
rm.i <- which(v1 %in% rm)
v1 <- v1[-rm.i]
rm这些是你要找的吗
intersect(v1, v2)
# [1] "B" "C"
setdiff(v2, v1)
# [1] "D"
如果我理解正确,您可以首先获得v2
中但不在v1
中的元素名称
tmp <- setdiff(v2, v1) # "D"
结果
existing.list
#$B
#NULL
#$C
#NULL
#$D
#NULL
没错,我在找什么!
tmp <- setdiff(v2, v1) # "D"
existing.list <- c(existing.list[v1 %in% v2],
setNames(vector("list", length(tmp)), tmp))
existing.list
#$B
#NULL
#$C
#NULL
#$D
#NULL