作者:风之淡然1_925 | 来源:互联网 | 2024-10-10 12:04
我想使用许多(> 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")) %>%
如何使我的 data.frame 与 兼容mlr3
,而无需以这种方式手动替换所有特殊字符(反复试验)?make.names()
显然不起作用!
我非常感谢一些帮助:) 谢谢!
回答
一种方法是使用 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 包(v0.3.0)于 2021 年 1 月 11 日创建
如果您正在处理向量,而不是 data.frame 的名称,则可以使用底层函数janitor::make_clean_names()
:
make_clean_names("süßigkeit")
[1] "sussigkeit"