如何更改列名以符合 mlr3 的命名约定
How to change column names to comply to mlr3's naming convention
我想使用许多 (>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()
显然不行!
非常感谢您的帮助:) 谢谢!
一种方法是使用 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 (v0.3.0)
创建于 2021-01-11
如果您处理的是矢量,而不是 data.frame 的名称,您可以使用底层函数 janitor::make_clean_names()
:
make_clean_names("süßigkeit")
[1] "sussigkeit"
使用 janitor
包是一种选择。 Base R 还带有(不太复杂的)函数 make.names(names, unique = TRUE)
,它也可以正常工作。
如果您确实需要保留原始名称,可以将实验性选项 "mlr3.allow_utf8_names"
设置为 TRUE
,但请注意,这可能会影响一些学习者。
我想使用许多 (>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()
显然不行!
非常感谢您的帮助:) 谢谢!
一种方法是使用 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 (v0.3.0)
创建于 2021-01-11如果您处理的是矢量,而不是 data.frame 的名称,您可以使用底层函数 janitor::make_clean_names()
:
make_clean_names("süßigkeit")
[1] "sussigkeit"
使用 janitor
包是一种选择。 Base R 还带有(不太复杂的)函数 make.names(names, unique = TRUE)
,它也可以正常工作。
如果您确实需要保留原始名称,可以将实验性选项 "mlr3.allow_utf8_names"
设置为 TRUE
,但请注意,这可能会影响一些学习者。