【问题标题】:R Remove an integer element from a factor-type vectorR从因子类型向量中删除整数元素
【发布时间】:2018-11-07 11:35:58
【问题描述】:

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

【问题讨论】:

    标签: r typeof


    【解决方案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重新转换


    EDIT 2 保留您可以使用的名称names(result) &lt;- names(strings)[is.na(as.numeric(strings))]

    【讨论】:

    • 它适用于这一点,但保留原始“名称”属性会很好(即 ​​984 985 986 987 988 989 990)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-05
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      相关资源
      最近更新 更多