Я хотел бы использовать gsub
для замены каждого появления обратного слэша в строке с помощью двух обратных косых черт.
В настоящее время я пробовал gsub("\\\\", "\\", x)
. Однако это не работает. Однако, если я заменю выражение вместо вместо каждой обратной косой черты на "a", она отлично работает.
> gsub("\\\\", "\\", "\\")
[1] ""
> gsub("\\\\", "a", "\\")
[1] "a"
> gsub("\\\\", "\\\\", "\\")
[1] "\\"
Последний символ - это только одна обратная косая черта; R просто печатает 2, потому что он печатает экранированные символы с обратной косой чертой. Использование nchar
подтверждает, что длина равна 1.
Что вызывает эту функцию? Второй аргумент gsub
не является регулярным выражением, поэтому наличие 4 обратных косых черт в строковом литерале должно быть преобразовано в символ с двумя обратными слэшами. Еще меньше имеет смысл, что первый вызов gsub
выше возвращает пустую строку.