R 减去集合,以便在结果中保留其他类似的多个元素
例如,我在set1中有两张椅子和一张桌子,在set2中有一张椅子。 我想从set1中减去set2,结果是R 减去集合,以便在结果中保留其他类似的多个元素,r,R,例如,我在set1中有两张椅子和一张桌子,在set2中有一张椅子。 我想从set1中减去set2,结果是c(“椅子”、“桌子”) set1set1另一种方法是使用make.unique使名称唯一,然后使用%中的%创建逻辑向量并索引原始向量,即 set1[!make.unique(set1) %in% make.unique(set2)] #[1] "chair" "table" 或者让它成为一种功能 f1 <- function(vec1, vec2){ vec1[!make.u
c(“椅子”、“桌子”)
set1set1另一种方法是使用make.unique
使名称唯一,然后使用%
中的%创建逻辑向量并索引原始向量,即
set1[!make.unique(set1) %in% make.unique(set2)]
#[1] "chair" "table"
或者让它成为一种功能
f1 <- function(vec1, vec2){
vec1[!make.unique(vec1) %in% make.unique(vec2)]
}
f1(set1, set2)
f1包vecsets
将对向量执行设置操作,同时保留重复项:
vecsets::vsetdiff( c("chair", "chair", "table"), c("chair") )
# [1] "chair" "table"
unique(c(set1,set2))
也许。@David如果在set1
中有三把椅子,那就不行了@Arenburg,unique(c(set1,set2))的问题是如果我在set1中有三把椅子,我就得不到想要的结果(“椅子”、“椅子”、“桌子”)。我们能做一个函数,把set1和set2作为参数并给出结果吗
f1 <- function(vec1, vec2){
vec1[!make.unique(vec1) %in% make.unique(vec2)]
}
f1(set1, set2)
vecsets::vsetdiff( c("chair", "chair", "table"), c("chair") )
# [1] "chair" "table"