从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 唯一的。我怎样才能提取这个值?我尝试了 unique
和 which
函数的变体,例如:
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"
我正在编写代码以从数据库中提取数据,删除包含所有 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 唯一的。我怎样才能提取这个值?我尝试了 unique
和 which
函数的变体,例如:
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"