我有一个包含
的数据框" 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)
但它不起作用。
请帮我替换" ||"与" |"
答案 0 :(得分:1)
正如MrFlick建议的那样,在你的gsub语句中包含fixed = TRUE。出现问题是因为" |"是一个正则表达式运算符。使用fixed = TRUE告诉gsub假设模式是字符串而不是RegEx。
leadtemp$collate = gsub("||","|",leadtemp$collate, fixed=TRUE)
另一种(虽然更复杂)的方法是逃避所有的| s:
leadtemp$collate = gsub("\\|\\|","\\|",leadtemp$collate)
答案 1 :(得分:0)
|
是一个元字符。您可以阅读here,但需要使用\
转义元字符。 \
也是元字符,因此必须以相同的方式将其转义。因此,只要您想在字符串中引用|
,就必须放置\\|
。这应该使你的代码工作:
leadtemp$collate = gsub("\\|\\|","\\|",leadtemp$collate)
答案 2 :(得分:0)
尝试:
gsub("[|]{2}", "|", leadtemp$collate)
我定义了包含管道字符的字符类,并强制gsub查找恰好两次出现。结果是:
"HYD_SOA_UNBLOCK~SOA_BLOCK-UK|SOA_BLOCK-DE|SOA_BLOCK-FR|SOA_BLOCK-IT|SOA_BLOCK-ES|"