【问题标题】:How to change column names to comply to mlr3's naming convention如何更改列名以符合 mlr3 的命名约定
【发布时间】:2021-05-21 22:00:38
【问题描述】:

我想使用许多 (>50K) 标记作为特征名称执行文本分类。但是mlr3 中的Task() 函数不允许列名中有很多字符,这些字符由make.names 传递,否则很好。以下是我目前找到的它们的列表:

  mutate(token=str_replace(token, "à", "a")) %>% 
    mutate(token=str_replace(token, "ã", "a")) %>%  
    mutate(token=str_replace(token, "á", "a")) %>% 
    mutate(token=str_replace(token, "ø", "o")) %>%
    mutate(token=str_replace(token, "ç", "c")) %>%
    mutate(token=str_replace(token, "ô", "o")) %>%
    mutate(token=str_replace(token, "é", "e")) %>% 
    mutate(token=str_replace(token, "é", "e")) %>%   
    mutate(token=str_replace(token, "í", "i")) %>% 
    mutate(token=str_replace(token, "î", "i")) %>% 
    mutate(token=str_replace(token, "è", "e")) %>% 
    mutate(token=str_replace(token, "ë", "e")) %>% 
    mutate(token=str_replace(token, "å", "a")) %>%  
    mutate(token=str_replace(token, "â", "a")) %>%  
    mutate(token=str_replace(token, "æ", "a")) %>%  
    mutate(token=str_replace(token, "ñ", "n")) %>%  

如何使我的 data.frame 与 mlr3 兼容,而无需以这种方式手动替换所有特殊字符(反复试验)? make.names() 显然不行!

非常感谢您的帮助 :) 谢谢!

【问题讨论】:

    标签: r mlr3


    【解决方案1】:

    一种方法是使用janitor::clean_names()

    d <- data.frame(`süßigkeit` = 1:3, `straße` = 1:3, `Hellö` = 1:3, `séé` = 1:3)
    janitor::clean_names(d)
    #>   sussigkeit strasse hello see
    #> 1          1       1     1   1
    #> 2          2       2     2   2
    #> 3          3       3     3   3
    

    reprex package 创建于 2021-01-11 (v0.3.0)

    如果您处理的是向量,而不是 data.frame 的名称,则可以使用底层函数 janitor::make_clean_names()

    make_clean_names("süßigkeit")
    [1] "sussigkeit"
    

    【讨论】:

    • 感谢您的补充,首先感谢您开发 janitor 包 - 非常有用!
    • 感谢您的回答,非常有帮助
    【解决方案2】:

    使用janitor 包是一种选择。 Base R 还带有(不太复杂的)函数make.names(names, unique = TRUE),它也可以正常工作。

    如果您确实需要保留原始名称,可以将实验选项 "mlr3.allow_utf8_names" 设置为 TRUE,但请注意这可能会破坏一些学习者。

    【讨论】:

      猜你喜欢
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      相关资源
      最近更新 更多