在函数中正确使用str_replace_all

时间:2019-01-03 14:50:26

标签: r

我正在尝试在r中的用户定义函数中使用str_replace_all,以用空格替换数据框中某列中字母“ T”的所有实例。该函数还删除每个字符串中的最后一个字母。

所需的输出

对于以下数据,当通过列df$code时,这会将第一个表转换为第二个表:

id    code
1     STWX
2     STVX
3     RTUX

id    code
1     S W
2     S V
3     R U

以前的尝试

我尝试使用以下内容:

str_convert <- function(x) {
str_replace_all(x, 'T', ' ')
substr(x,1,nchar(x)-1)
}

但是,我得到的输出不会删除'T',因此最终输出看起来像这样:

id    code
1     STW
2     STV
3     RTU

我犯了一个明显的错误吗?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

尝试这个

str_convert <- function(x) {
   r <- str_replace_all(x, 'T', ' ')
   r <- substr(r,1,nchar(r)-1)
 return(r)
   }

 df1 %>% 
   mutate(res = str_convert(code))
  id code res
1  1 STWX S W
2  2 STVX S V
3  3 RTUX R U

答案 1 :(得分:1)

和tidyverse解决方案:

sequelize.define(...

这会将来自str_replace_all的输出作为str_sub的第一个参数转发,其结果随后由函数返回。 str_sub也可以具有负的停止值(从末尾开始倒数),在此很方便。