gsub 和 %>% 可以一起工作吗

can gsub and %>% work together

想知道我们可以一起使用 pipe get gsub 吗?好像不能

t <- c("(66.8309216,20.3991966)","(65.3337311,16.5161694)","(63.4276473,17.7292444)","(63.1711922,14.9591800)",
"(61.3011993,16.1534214)","(61.0917012,14.6663653)")
t%>%gsub('\(','',t) %>%gsub('\)','',t)

似乎不​​是 work.also 如果有一个 df 并且有一个名为 t 的列,里面的数据相同

df$t%>%gsub('\(','',df$t) %>%gsub('\)','',df$t)

还是不行。 有人给个建议吗?

这个有效

t<-gsub('\(','',t)
t<-gsub('\)','',t)

或者您可以一次性替换两个表达式:

gsub("(\(|\))", "", t);
#[1] "66.8309216,20.3991966" "65.3337311,16.5161694" "63.4276473,17.7292444"
#[4] "63.1711922,14.9591800" "61.3011993,16.1534214" "61.0917012,14.6663653"

解释:(a|b) 形式的正则表达式模式匹配 ab


假设您要在下一步中提取条目,然后您可以使用 read.csv 自动填充 data.frame 和来自 t:

的条目
read.csv(text = gsub("(\(|\))", "", t), header = F);
#        V1       V2
#1 66.83092 20.39920
#2 65.33373 16.51617
#3 63.42765 17.72924
#4 63.17119 14.95918
#5 61.30120 16.15342
#6 61.09170 14.66637

我们可以把括号放在gsub的方括号里面,去掉两个

gsub("[()]", "", t)
#[1] "66.8309216,20.3991966" "65.3337311,16.5161694" "63.4276473,17.7292444"
#[4] "63.1711922,14.9591800" "61.3011993,16.1534214" "61.0917012,14.6663653"

如果括号是开始和结束字符,那么也可以使用substr方法

substr(t, 2, nchar(t)-1)

这将在您添加 {} 时起作用,对于第二个管道调用 gsub 应该使用 . 而不是 t

t %>%{gsub('\(','',t)} %>%{gsub('\)','',.)}
[1] "66.8309216,20.3991966" "65.3337311,16.5161694" "63.4276473,17.7292444" "63.1711922,14.9591800" "61.3011993,16.1534214" "61.0917012,14.6663653"