从R中的不相等字符串中选择唯一值

Selecting unique value from unequal character strings in R

我正在编写代码以从数据库中提取数据,删除包含所有 NA 的项目列。我想让 R 告诉我删除列的列名。我有 newdat 和 newdat1,这是删除包含 NA 的列之前和之后的数据。因此,到目前为止我有:

> name<-colnames(newdat)
> name
[1] "i5" "i4" "i2" "i3" "i1" "b4" "b3" "b2" "b1"

> name1<-colnames(newdat1)
> name1
[1] "b3" "i5" "i4" "i2" "b2" "b1" "i3" "i1"

因此,我有两个长度不等的字符串,其中 8 个值相同,1 个值是 newdat1 唯一的。我怎样才能提取这个值?我尝试了 uniquewhich 函数的变体,例如:

xnames<-name1[-which(name1==name)]

但是我得到一个错误,因为它们的长度不等。请帮忙!谢谢。

尝试:

 name[!(name %in% name1)]

正如所指出的那样,如果您想双向使用(即有些可能在 name1 而不是 name),则需要相反的方式:

name1[!(name1 %in% name)]

或一起找出所有差异:

c(name1[!(name1 %in% name)], name[!(name %in% name1)])

正如@docendo 所建议的那样,使用 setdiff:

> name <- c("i5", "i4", "i2", "i3", "i1", "b4", "b3", "b2", "b1")
> name1 <- c("b3", "i5", "i4", "i2", "b2", "b1", "i3", "i1")
> setdiff(name, name1)
[1] "b4"