我有一列包含这样的值:
structure(list(col1 = c(" | | | | | | | |", "| | | | | | | | | | | | | | |",
"| | | | | | | | | | | | | | | ", "stop|", "stop| | ",
"stop | go")), class = "data.frame", row.names = c(NA, -6L))
我希望能够删除 |
的所有迭代,当它们连续出现时,或者如果它们显示为 | |
或 | | |
。
目前,我正在尝试找出管道的所有迭代,但它们似乎有点随机。我想知道是否有办法确保我的迭代涵盖以下实例:
- 当连续出现多个
|
时 - 当有多个
|
连续且有多个空格时(例如,| |
或| | |
- 当
|
位于行尾时(例如,\\|$
但是,我会在 stop | 之间保留管道去
。
这是我现在正在使用的代码,但它删除了 stop | 中的管道去
。
df$col1 <- gsub('[\\| ]{2,}|[\\|$]', '', df$col1)
我想删除所有 |
符号,除了 stop | 中的符号去
。
最佳答案
也许这行得通
trimws(trimws(gsub('(\\|\\s+){2,}', "", df$col1),
whitespace = "\\s+\\|"), whitespace = "\\|")
-输出
[1] "" "" "" "stop" "stop" "stop | go"
关于r - 如何使用gsub和regex来识别和删除连续的符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74522765/