質問: パスが指定されたときに指定されたパスの(エスケープ)を/に置換したいと思ってます。 例えば C:\R\data\covid を C:/R/data/covid/ というように置換したいです。 以下のプログラムのように、gsub関数を使ってパスの(エスケープ)を/に置換しようとしましたが、エラーになってしまいました。 ``` gsub("\\","/","C:\R\data\covid\") エラー: ""C:\R" で始まる文字列の中で '\R' は文字列で認識されないエスケープです ``` 3番目の変数を書き換えず、置換する方法はありますか?(エラーの原因は3番目の変数に(エスケープ)があるからだと思ってますが、3番目の変数をそのまま使いたいです。) 補足 以下のプログラムは動くことを確認しています。 ``` gsub("\\","/","C:\\R\\data\\covid\\", fixed=TRUE) [1] "C:/R/data/covid/" gsub("\\\\","/","C:\\R\\data\\covid\\") [1] "C:/R/data/covid/" ```
回答: R言語では(R言語以外でもC言語なども)バックスラッシュはエスケープシーケンスを意味します。 バックスラッシュ自体に特別な意味があるのです。 従いまして、”\”を表す場合”\\”と2つで表現します。 これはプログラムの中では”\”を意味します。 従って、 ``` gsub("\\","/","C:\\R\\data\\covid\\", fixed=TRUE) [1] "C:/R/data/covid/" gsub("\\\\","/","C:\\R\\data\\covid\\") [1] "C:/R/data/covid/" ``` のように”\\”と書くと、内部では”\”と見なされますので、これで正解です。