如何替换“|”在 R

How to replace "|" in R

我有一个包含

的数据框

"HYD_SOA_UNBLOCK~SOA_BLOCK-UK|SOA_BLOCK-DE||SOA_BLOCK-FR||SOA_BLOCK-IT||SOA_BLOCK-ES|"

我希望结果是-

"HYD_SOA_UNBLOCK~SOA_BLOCK-UK|SOA_BLOCK-DE|SOA_BLOCK-FR|SOA_BLOCK-IT|SOA_BLOCK-ES|"

我试过了:

leadtemp$collate = gsub("||","|",leadtemp$collate) 

但它不起作用。

请帮我替换“||”用“|”

按照 MrFlick 的建议,在您的 gsub 语句中包含 fixed = TRUE。出现问题是因为“|”是正则表达式运算符。使用 fixed = TRUE 告诉 gsub 假定模式是字符串而不是 RegEx。

leadtemp$collate = gsub("||","|",leadtemp$collate, fixed=TRUE)

另一种(虽然更复杂)的方法是转义所有 |s:

leadtemp$collate = gsub("\|\|","\|",leadtemp$collate)

| 是元字符。如您所见 here,需要使用 \ 转义元字符。 \ 也是一个元字符,因此必须以相同的方式将其转义。所以每当你想在字符串中引用 | 时,你必须放置 \|。这应该使您的代码工作:

leadtemp$collate = gsub("\|\|","\|",leadtemp$collate)

尝试:

gsub("[|]{2}", "|", leadtemp$collate)

我已经定义了包含管道字符的字符 class 并强制 gsub 查找恰好两个 occurrences.Result 是:

"HYD_SOA_UNBLOCK~SOA_BLOCK-UK|SOA_BLOCK-DE|SOA_BLOCK-FR|SOA_BLOCK-IT|SOA_BLOCK-ES|"