首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用看门人clean_names保存特定字符

用看门人clean_names保存特定字符
EN

Stack Overflow用户
提问于 2022-02-23 17:08:22
回答 1查看 124关注 0票数 0

我正在使用janitor clean_names()/make_clean_names(),并希望保留某些字符。我认为replace是我应该使用的论点,在某些情况下是可行的。例如,我可以用零代替破折号:

代码语言:javascript
复制
> janitor::make_clean_names("x-x", replace = c(`-` = "0"))
[1] "x0x"

但是,似乎没有办法保留破折号(或其他特殊字符):

代码语言:javascript
复制
> janitor::make_clean_names("x-x", replace = c(`-` = "-"))
[1] "x_x"
EN

回答 1

Stack Overflow用户

发布于 2022-02-23 17:24:08

使用make_clean_names的主要原因之一是返回一个可以解析的标准名称,而不必使用反引号。当存在非标准字符时,包使用_作为默认替换。因此,即使我们在vector中提供了一个命名的replace,它也将在代码中更改为_,因为文档表明操作顺序为

操作顺序是:使替换、(可选) ASCII转换、删除初始空格和标点符号、应用base::make.names()、应用snakecase::to_any_case和添加数字后缀来解析任何重复的名称。

代码语言:javascript
复制
janitor::make_clean_names("x-x", replace = c(`-` = "~"), use_make_names = FALSE)
[1] "x_x"
janitor::make_clean_names("x-x", replace = c(`-` = "-"), use_make_names = FALSE)
[1] "x_x"

一个选项是指定sep_out以返回感兴趣的字符。

代码语言:javascript
复制
janitor::make_clean_names("x-x",  sep_out = "-")
[1] "x-x"
janitor::make_clean_names("x-x",  sep_out = "~")
[1] "x~x"

使用make_clean_names保留非标准字符的一个选项是用唯一的标准字符替换,然后在以后替换唯一的字符/单词。

代码语言:javascript
复制
gsub("_change_", "-", janitor::make_clean_names("x-x:x~x", 
    replace = c(`-` = "_change_")))
[1] "x-x_x_x"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71241246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档