13

以下のRのような行を含むファイルを読み取るのに問題があります。

"_:b5507F4C7x59005","Fabiana D\"atri"

何か案が?どうすればread.tableに「\」が引用符のエスケープであることを理解させることができますか?

乾杯、アレクサンドル

4

6 に答える 6

4

Linux/Unix (または cygwin または GnuWin32 を使用する Windows) では、エスケープされた二重引用符を二重二sed重引用符に変換するために使用できます。\"""read.csv

p <- pipe(paste0('sed \'s/\\\\"/""/g\' "', FILENAME, '"'))
d <- read.csv(p, ...)
rm(p)

実際には、次のsedコマンドを使用して CSV 入力を前処理します。

sed 's/\\"/""/g' file.csv

私はこれを美しいとは呼びませんが、少なくとも R 環境を離れる必要はありません...

于 2012-11-23T10:05:57.303 に答える
2

これがより詳細ではないことを前もってお詫びします-私はまさにコードクランチの真っ只中にいます。

scan() 関数の使用を検討してください。以下で構成される単純なサンプル ファイル「sample.csv」を作成しました。

V1,V2
"_:b5507F4C7x59005","Fabiana D\"atri"

2つの簡単な可能性があります(コマンドラインにコピーして貼り付けることができるように出力がコメント化されています):

test <- scan("sample.csv", sep=",", what='character',allowEscapes=TRUE)
## Read 4 items
test
##[1] "V1"                "V2"                "_:b5507F4C7x59005"
##[4] "Fabiana D\\atri\n"

また

test <- scan("sample.csv", sep=",", what='character',comment.char="\\")
## Read 4 items
test
## [1] "V1"                "V2"                "_:b5507F4C7x59005"
## [4] "Fabiana D\\atri\n"

必要なものを得るには、おそらくもう少しいじる必要があります。また、すでに writeLines について言及されているようですので、すでに試したことがあるかもしれません。いずれにせよ、頑張ってください!

于 2011-08-15T16:38:49.377 に答える
1

quote引数を設定することで、サンプルを機能させることができました。

> read.csv('test.csv',quote="'",head=FALSE)
                   V1                  V2
1 "_:b5507F4C7x59005" "Fabiana D\\"atri" 
2 "_:b5507F4C7x59005" "Fabiana D\\"atri" 
于 2011-08-15T15:42:49.693 に答える
-2

これはで問題ないはずread.csv()です。のヘルプを見てください?read.csv-引用符を指定するためのオプションはですquote = "...."。ただし、この場合、問題が発生する可能性がありread.csv()ます。一致する引用符を表示することを好むようです。

read.table("sample.txt", header = FALSE, as.is = TRUE)私はあなたのテキストをで、で同じことを試みましたsample.txt、そしてそれはうまくいくようです。他のすべてがで失敗した場合read.csv()、私はバックアップしてread.table()パラメータを慎重に指定する傾向があります。

于 2011-08-15T15:33:52.340 に答える