获取gsub和管道返回替换而不是整个字符串

时间:2017-08-25 12:18:28

标签: r magrittr

我想使用%>%gsub来编写一个替换字符串中多个模式的函数。但是它不是返回带有替换字符的字符串,而只返回替换字符:

> x <- 'abcdef'
> x %>% gsub('c', ' ')
[1] " "

为什么在这种情况下不会返回'ab def'

如何正确合并%>%gsub

2 个答案:

答案 0 :(得分:2)

两种选择: 命名参数:

x %>% gsub(pattern = 'c', replacement = ' ')

或使用.指示输入的位置:

x %>% gsub('c', ' ', .)

答案 1 :(得分:0)

管道使得以下函数默认采用左侧作为第一个未命名的参数,因此要使用gsub,您需要命名以前的参数或明确显示将左侧放在函数调用中的位置。

这将引导您进入@YCR的解决方案

许多以这种方式运行的基本函数(不将数据作为第一个参数)现在在purrrstringr等包中具有等价物。

如果您要经常使用dplyrmagrittr,可能需要查找它们。

在这种情况下,您可以使用stringr::str_replace_all

library(stringr)
x %>% str_replace_all('c', ' ')