我可以使用以下嵌套函数修剪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无济于事。
答案 0 :(得分:0)
试试这个:
library(magrittr)
x <- " a1~!@#$%^&*(){}_+:\"<>?,./;'[]-= " # input
x %>%
gsub(pattern = "[[:punct:]]", replacement = "") %>%
trimws -> z