89

WindowsでRを実行しており、デスクトップにcsvファイルがあります。次のようにロードします。

x<-read.csv("C:\Users\surfcat\Desktop\2006_dissimilarity.csv",header=TRUE)

しかし、Rは次のエラーメッセージを表示します

エラー: 「C:\U」で始まる文字列に 16 進数なしで「\U」が使用されています

では、このファイルをロードする正しい方法は何ですか。ビスタを使用しています

4

11 に答える 11

134

\すべてをに置き換えます\\

この場合、次の文字をエスケープしようとしているUので、挿入するには、エスケープされた文字を挿入する\必要があり\ます\\

于 2011-12-08T02:32:48.007 に答える
27

smitec は既に正解しているため、この回答を正解としてマークしないでください。Windows パスを R で機能する形式に変換する .First ライブラリに保持している便利な関数を含めています (Sacha Epskamp で説明されているメソッド)。パスをクリップボードにコピーし (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)
}
于 2011-12-08T03:01:34.760 に答える
11

解決

これを試して:x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)

説明

には特別な意味があるため、R は通常の Windows パスを正しく理解できません。"\"これは、次の文字に特別な意味を与えるためのエスケープ文字として使用されます (\n改行、\tタブ、\rキャリッジ リターンなどについては、こちらをご覧ください)。

R はシーケンスを知らないため、\U不平を言います。"\"を置き換える"/"か、追加を使用 して特別な意味から"\"逃れる だけ"\"で、すべてがスムーズに機能します。

Windows では、R で Windows 固有のパスを使用してワークフローを改善するための最善の方法は、カスタム ホットキーを可能にする AutoHotkey などを使用することだと思います。

  • ホットキーを定義します。例: Cntr- Shift-V
  • クリップボード内のバックスラッシュをスラッシュに置き換える手順を割り当てます...
  • パスを R にコピー ペーストする場合はいつでも、 -の代わりにCntr-を使用できます。ShiftVCntrV
  • 出来上がり

AutoHotkey コード スニペット (ホームページへのリンク)

^+v::
StringReplace, clipboard, clipboard, \, /, All 
SendInput, %clipboard% 
于 2013-01-15T10:02:41.497 に答える
5

私の解決策は、 RStudio スニペットを次のように定義することです。

snippet pp
    "`r gsub("\\\\", "\\\\\\\\\\\\\\\\", readClipboard())`"

このスニペットは、バックスラッシュ\を 2 つのバックスラッシュに変換します\\。バックスラッシュをスラッシュに変換したい場合は、次のバージョンが機能します/

snippet pp
    "`r gsub("\\\\", "/", readClipboard())`"

好みのスニペットが定義されたら、p- p- TAB-と入力してクリップボードからパスを貼り付けますENTER(つまり、pp に続いて Tab キーを押してから Enter を押します)。パスは魔法のように R フレンドリーな区切り記号で挿入されます。

于 2016-11-14T04:45:18.103 に答える
0

R は、文字列内の「\」をエスケープ文字として読み取っていると思います。たとえば、\n は文字列内に新しい行を作成し、\t は文字列内に新しいタブを作成します。

R はこれを通常のバックスラッシュとして認識するため、'\' が機能します。

于 2014-11-21T23:12:15.697 に答える
-5

簡単な方法は、python を使用することです。Python端末タイプで

r「C:\Users\surfcat\Desktop\2006_dissimilarity.csv」とすると、「C:\Users\surfcat\Desktop\2006_dissimilarity.csv」が返されます

于 2015-06-02T05:43:50.017 に答える