首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用janitor::make_clean_names()自定义清除字符串向量

使用janitor::make_clean_names()自定义清除字符串向量
EN

Stack Overflow用户
提问于 2021-01-21 13:47:56
回答 1查看 404关注 0票数 2

我有一个向量,它包含数据帧的列名。我想清理那些绳子。

代码语言:javascript
复制
vec_of_names <- c("FIRST_column", 
                  "another-column", 
                  "ALLCAPS-column", 
                  "cOLumn-with___specialsuffix", 
                  "blah#4-column",
                  "ANOTHER_EXAMPLE___specialsuffix",
                  "THIS_IS-Misleading_specialsuffix")

我特别想使用janitor::make_clean_names()来进行清理。

代码语言:javascript
复制
janitor::make_clean_names(vec_of_names)

[1] "first_column"                     "another_column"                  
[3] "allcaps_column"                   "c_o_lumn_with_specialsuffix"     
[5] "blah_number_4_column"             "another_example_specialsuffix"   
[7] "this_is_misleading_specialsuffix"

然而,,我想应用以下规则:

  1. 当字符串以___specialsuffix (即3个下划线和“专用后缀”)结尾时,

代码语言:javascript
复制
- clean with `janitor::make_clean_names()` only the part BEFORE `___specialsuffix` 

(意思是从strsplit(x, "___specialsuffix")返回的值)。

代码语言:javascript
复制
- then keep the cleaned string pasted back to `___specialsuffix`.

否则,如果字符串未以结束,则对整个字符串定期使用janitor::make_clean_names()清除.

因此,所需的输出为:

代码语言:javascript
复制
[1] "first_column"                     "another_column"                  
[3] "allcaps_column"                   "c_o_lumn_with___specialsuffix"     ## elements [4] and [6]
[5] "blah_number_4_column"             "another_example___specialsuffix"   ## were handled according to rule #1
[7] "this_is_misleading_specialsuffix"                                     ## outlined above

非常感谢你的任何想法!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-21 13:58:33

代码语言:javascript
复制
vec_of_names <- c("FIRST_column", 
                  "another-column", 
                  "ALLCAPS-column", 
                  "cOLumn-with___specialsuffix", 
                  "blah#4-column",
                  "ANOTHER_EXAMPLE___specialsuffix",
                  "THIS_IS-Misleading_specialsuffix")


library(tidyverse)

suffix <- vec_of_names %>% str_extract(pattern = "___specialsuffix$") %>% replace_na("")
cleaned_without_suffix <- vec_of_names %>% str_remove("___specialsuffix$") %>% janitor::make_clean_names()


output <- paste0(cleaned_without_suffix, suffix)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65828826

复制
相关文章

相似问题

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