我有向量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