我一直在尝试通过使用gsub函数成功地用R清理df列。当>
和/
不在包含字母的字符串之间时,我试图将它们删除。我陷入了以下阶段:
输入:
/ > abcdef/bbb
abcdef/ccc > / > abcdef/ccc > /
abcdef/bbb > abcdef/ccc > / > / > bbb/ccc
所需的输出:
abcdef/bbb
abcdef/ccc > abcdef/ccc
abcdef/bbb > abcdef/ccc > bbb/ccc
我用过gsub("(/ >)", "", df[,1])
和gsub("( > /)", "", df[,1])
,但不起作用。当>
符号位于字母或单词的字符串之前或之后时,由于要保留空格,空格变得更加困难。
有人知道解决方法吗?我不是真正的编码人员,所以将不胜感激:)
答案 0 :(得分:1)
这项工作可以吗?
gsub("(/ > | > /)", "", ss)
#[1] "abcdef/bbb" "abcdef/ccc > abcdef/ccc"
#[3] "abcdef/bbb > abcdef/ccc > bbb/ccc"
ss <- c("/ > abcdef/bbb", "abcdef/ccc > / > abcdef/ccc > /", "abcdef/bbb > abcdef/ccc > / > / > bbb/ccc")
答案 1 :(得分:0)
警告:这将删除空格:@Maurits Evers的答案中的数据:
library(stringr)
ss1<-str_remove_all(ss,'[/ >](?<= )')
str_remove_all(ss1,"(/>)|(>/)")
#[1] "abcdef/bbb" "abcdef/ccc>abcdef/ccc"
#[3] "abcdef/bbb>abcdef/ccc>bbb/ccc"
这会保留它,但我发现它有些反复试验:
str_remove_all(ss,"(/ >)|(> /)")
#[1] " abcdef/bbb" "abcdef/ccc > abcdef/ccc "
#[3] "abcdef/bbb > abcdef/ccc > bbb/ccc"