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

时间:2018-11-07 11:35:59

标签: r typeof

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

2 个答案:

答案 0 :(得分:1)

我们可以使用!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))]

答案 1 :(得分:0)

补充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