RをWindowsで実行し、デスクトップにcsvファイルがあります。次のようにロードします
x<-read.csv("C:\Users\surfcat\Desktop\2006_dissimilarity.csv",header=TRUE)
しかし、Rは次のエラーメッセージを出します
エラー:「C:\ U」で始まる文字列に16進数なしで「\ U」が使用されています
したがって、このファイルをロードする正しい方法は何ですか。私はVistaを使用しています
すべての\
を\\
に置き換えます。
この場合U
の次の文字をエスケープしようとしているので、\
を挿入するには、\
であるエスケープされた\\
を挿入する必要があります
Smitecがすでに正しく回答しているため、この応答を正しいものとしてマークしないでください。私は、WindowsパスをRで機能する形式(Sacha Epskampで説明されているメソッド)に変換するための.Firstライブラリに保持している便利な関数を含めています。パスをクリップボードにコピーし(ctrl + c)、関数をpathPrep()
として実行します。引数は不要です。パスはコンソールに正しく出力され、スクリプトに簡単に貼り付けるためにクリップボードに書き込まれます。これが役に立てば幸いです。
pathPrep <- function(path = "clipboard") {
y <- if (path == "clipboard") {
readClipboard()
} else {
cat("Please enter the path:\n\n")
readline()
}
x <- chartr("\\", "/", y)
writeClipboard(x)
return(x)
}
ソリューション
これを試してください:x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)
説明
"\"
には特別な意味があるため、Rは通常のウィンドウパスを正しく理解できません。これは、後続の文字に特別な意味を与えるエスケープ文字として使用されます(改行には\n
、タブには\t
\r
キャリッジリターンの場合、...、 こちらをご覧ください )。
Rはシーケンス\U
を知らないため、文句を言います。 "\"
を"/"
に置き換えるか、追加の"\"
を使用して"\"
を特別な意味からエスケープすれば、すべてがスムーズに機能します。
代替
Windowsでは、RのWindows固有のパスを使用してワークフローを改善するために最善のことは、たとえばカスタムホットキーを許可するAutoHotkey:
AutoHotkeyコードスニペット(ホームページへのリンク)
^+v::
StringReplace, clipboard, clipboard, \, /, All
SendInput, %clipboard%
My Solution は、次のように RStudioスニペット を定義することです。
snippet pp
"`r gsub("\\\\", "\\\\\\\\\\\\\\\\", readClipboard())`"
このスニペットは、バックスラッシュ\
を二重のバックスラッシュ\\
に変換します。次のバージョンは、バックスラッシュをスラッシュ/
に変換する場合に機能します。
snippet pp
"`r gsub("\\\\", "/", readClipboard())`"
希望のスニペットが定義されたら、次のように入力してクリップボードからパスを貼り付けます p-p-TAB-ENTER (つまり、ppを押してからタブキーを押して入力します)、Rフレンドリーな区切り文字を使用してパスが魔法のように挿入されます。
バックスラッシュ\をスラッシュに置き換えます/ Windowsマシンを実行している場合
Windowsでは、バックスラッシュをスラッシュに置き換えるとうまくいきました。
テキストマイニング用のデータ(音声、ニュースレターなど)を含むtxtファイルの場合、これに対処する最良の方法は、「\」を「/」に置き換えることです。
例:
file<-Corpus(DirSource("C:/Users/PRATEEK/Desktop/training tool/Text Analytics/text_file_main"))
私はこれが本当に古いことを知っていますが、とにかくコピーして貼り付ける場合は、単に使用できます:
read.csv(readClipboard())
readClipboard()は、バックスラッシュをエスケープします。 「.csv」がコピーに含まれていることを忘れないでください。
read.csv(paste0(readClipboard(),'.csv'))
入力を最小限に抑えたい場合は、いくつかの機能を使用できます。
setWD <- function(){
setwd(readClipboard())
}
readCSV <- function(){
return(readr::read_csv(paste0(readClipboard(),'.csv')))
}
#copy directory path
setWD()
#copy file name
df <- readCSV()
readClipboard()
も直接機能します。パスをクリップボードにコピーします
C:\Users\surfcat\Desktop\2006_dissimilarity.csv
それから
readClipboard()
として表示されます
[1] "C:\\Users\\surfcat\\Desktop\\2006_dissimilarity.csv"
Rはエスケープ文字として文字列の「\」を読んでいると思います。たとえば、\ nは文字列内に新しい行を作成し、\ tは文字列内に新しいタブを作成します。
Rはこれを通常のバックスラッシュとして認識するため、「\」は機能します。