如何更改列名称以符合 mlr3 的命名约定

krl*_*trl 2 r mlr3

我想使用许多(> 50K)标记作为特征名称来执行文本分类。但是,中的Task()函数mlr3不允许在列名中包含很多字符,这些字符是通过的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")) %>%  
Run Code Online (Sandbox Code Playgroud)

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

我非常感谢一些帮助:) 谢谢!

Dav*_*vid 5

一种方法是使用 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
Run Code Online (Sandbox Code Playgroud)

reprex 包(v0.3.0)于 2021 年 1 月 11 日创建

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

make_clean_names("süßigkeit")
[1] "sussigkeit"
Run Code Online (Sandbox Code Playgroud)