R从因子类型向量中移除一个整数元素



我有向量foo:

> foo
983      984      985      986      987      988      989      990
cluster4 cluster4 cluster4 cluster1 cluster1 cluster1 cluster5 cluster5
Levels: cluster1  cluster4 cluster5  

typeof(foo)
"integer"
class(foo)
"factor"

如何删除元素"983"?所以我得到:

> foo_removed
984      985      986      987      988      989      990
cluster4 cluster4 cluster1 cluster1 cluster1 cluster5 cluster5
Levels: cluster1  cluster4 cluster5 

我们可以使用!is.na(as.numeric())来识别数字字符串并将其删除。

onlynumbers <- "123.4"
onlyletters <- "abcd."
strings <- c(onlynumbers, onlyletters)
!is.na(as.numeric(strings))
[1]  TRUE FALSE

正如你所看到的,这是有效的,现在删除

result <- strings[is.na(as.numeric(strings))]
> result
[1] "abcd."

编辑您应该首先使用as.character.factor将因子转换为字符,然后可以使用as.factor重新转换


编辑2以保留可以使用names(result) <- names(strings)[is.na(as.numeric(strings))]的名称

补充gpier的答案。

foo <- as.character.factor(foo)
foo_removed <-foo[-c(1)]
foo_removed <- as.factor(foo_removed)
> foo_removed
cluster4 cluster4 cluster1 cluster1 cluster1 cluster5 cluster5
Levels: cluster1  cluster4 cluster5  

相关内容

最新更新