在R

时间:2017-03-03 16:14:27

标签: r dplyr magrittr

我可以使用以下嵌套函数修剪R中的空格和标点符号:

x <- "    a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=    "

y <- trimws(gsub("[[:punct:]]", "", x)) #returns "a1" as desired

但是我想使用magrittr / dplyr管道运算符(%&gt;%)而不是嵌套函数,因为它使代码对其他人更具可读性,但似乎无法实现工作。这是我正在尝试的内容:

x <- "    a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=    "

z <- gsub("[[:punct:]]", "", x) %>% trimws(x)

这是我收到的错误:

  

match.arg(其中)出错:&#39; arg&#39;应该是“两个”,“左”之一,   “右”

这个错误对我没有意义,因为省略修剪的其他参数通常会删除左右尾随空格,因此我不必指定&#34;两者都是&#34;。只有在管道语法中与gsub一起使用时才会抛出此错误。

我对管道的工作原理缺少什么?我已经审查了magrittr无济于事。

1 个答案:

答案 0 :(得分:0)

试试这个:

library(magrittr)
x <- "    a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=    "   # input

x %>% 
  gsub(pattern = "[[:punct:]]", replacement = "") %>%
  trimws -> z