Rで作成している文字列のベクトルに誤った \n 文字が表示される理由を誰かが理解するのを手伝ってくれることを願っています.
固定幅形式の非常に幅の広いデータ ファイルをインポートしてクリーンアップしようとしています ( http://www.state.nj.us/education/schools/achievement/2012/njask6/、「データ実行用のテキスト ファイル」)。read.fwf の使用に関するUCLA チュートリアルとこの優れた SO の質問に従って、インポート後に列名を付けました。
ファイルの幅が非常に広いため、列ヘッダーは長く、すべて合わせて 29,800 文字弱です。私は文字列の単純なベクトルとしてそれらを渡しています:
column_names <- c(...)
ここで醜いダンプを惜しみませんが、すべてをpastebinに落としました。
サブセットの一部が 0 行を返していることに気付いたとき、分析のためにいくつかの変数をクリーンアップして変換していました。困惑した後 (スペルを間違えたのでしょうか?)、どういうわけか '\n' 改行文字が列ヘッダーに導入されていることに気付きました。
作成した column_names ベクトルをループすると
for (i in 1:length(column_names)) {
print(column_names[i])
}
81 行目の途中に最初の改行文字が表示されます -
SPECIAL\n教育科学科学登録番号
私がこれを解決しようとした道:
1)それは私の環境に関するものですか?R で通常のスクリプト エディターを使用していますが、行は折り返されますが、画面上の改行が \n 文字の配置と一致しません。これは、R スクリプト エディターではないことを示唆しています。
2) GUI 設定はありますか? いくつかの検索を行いましたが、何も見つかりませんでした。
3) パターンはありますか? 約4000文字ごとに改行文字が挿入されるようです。R/S プリミティブを読んで、これが基本的な R データ構造と関係があるかどうかを判断しようとしましたが、すぐに頭に浮かびました。
長い文字列を短いチャンクに分割してから、それらを結合してみましたが、問題は解決したようです。
column_names.1 <- c(...)
column_names.2 <- c(...)
column_names_combined <- c(column_names.1, column_names.2)
すぐに回避策がありますが、ここで実際に何が起こっているのか知りたいです。
文字ベクトルの問題に関するいくつかの投稿では、メモリ プロファイルを実行するよう提案されました。
memory.profile()
NULL symbol pairlist closure environment promise
1 9572 220717 4734 1379 5764
language special builtin char logical integer
63932 165 1550 18935 10302 30428
double complex character ... any list
2039 1 60058 0 0 20059
expression bytecode externalptr weakref raw S4
1 16553 725 150 151 1162
Windows 7 (エンタープライズ、SP 1、8 ギガ RAM) で R 2.15.1 (64 ビット) R を実行しています。ありがとう!