0

私は R にまったく慣れていません。.cvs ファイルからデータを読み取ってプロットするスクリプトがいくつかあります。テーブル全体を読み取り、特定の列 (例: 列 6) にデータをプロットします。

tablecsv <- read.csv("myfile.csv", header=TRUE)
plot.values_csv <- tablecsv[,6]

次に、代わりにタブ区切りファイルからデータを読み取るように変更しました(read.delimおよび/またはを使用read.table)。

tabletab <- read.delim("myfile.tab", header=TRUE, sep="\t")
plot.values_tab <-tabletab[,6]

奇妙なことに、列の番号付けが変更されました。「tabletab」の列 6 は、常に「tablecsv」の列 7 に対応します。また、「tabletab」の列 1 は「tablecsv」の列 2 に対応します。read.tableそのため、 orを使用するread.delimと、入力ファイルの最初の列が無視されるか、コメントとして解釈されるようです。どのパラメーターでもこれをオフにすることはできないようです。を設定してみskip = 0ましたが、それは何も変更せず、とにかくデフォルトのパラメーターです。#また、最初の列には、私が理解している限り、デフォルトのコメント記号である文字が含まれていません。

誰かがこの振る舞いについて説明を受けましたか? (スクリプトの列番号を変更するだけで回避するのは難しくないことはわかっています。この動作は私には意味がありません)。

編集: .csv および .tab 入力ファイルの最初の数行はそれぞれ次のとおりです。

myfile.csv:

name,A,B,C,D,E,F,G,H,I,J,K
xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_-,0.242718447,0.35483871,0.166666667,0.2,0.368932039,0.451612903,0.333333333,0.418604651,0.333333333,0.763109267,0.711142183
xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_+,0.152317881,0.1875,0.214285714,0.120879121,0.231788079,0.25,0.464285714,0.35,0.153846154,0.635002306,0.612372436

myfile.tab:

name    A   B   C   D   E   F   G   H   I   J   K
xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.242718447 0.35483871  0.166666667 0.2 0.368932039 0.451612903 0.333333333 0.418604651 0.333333333 0.763109267 0.711142183
xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_+ 0.152317881 0.1875  0.214285714 0.120879121 0.231788079 0.25    0.464285714 0.35    0.153846154 0.635002306 0.612372436

Edit2:これは私のテーブルタブが今のように見えるものです:

    > tabletab1[1:3,]
                                               name         A          B
  1     xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.2427184 0.35483871
  2     xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_+ 0.1523179 0.18750000
  3     xxx_NODE_52133_yyy_348_zzz_3.123563_1_388_- 0.1240310 0.06666667
            C         D         E         F         G         H         I
  1 0.1666667 0.2000000 0.3689320 0.4516129 0.3333333 0.4186047 0.3333333
  2 0.2142857 0.1208791 0.2317881 0.2500000 0.4642857 0.3500000 0.1538462
  3 0.1000000 0.1518987 0.2403101 0.1333333 0.3000000 0.2000000 0.2658228
            J         K
  1 0.7631093 0.7111422
  2 0.6350023 0.6123724
  3 0.7236342 0.5617433

>   tablecsv1[1:3,]
                                             name         A          B
1     xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.2427184 0.35483871
2     xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_+ 0.1523179 0.18750000
3     xxx_NODE_52133_yyy_348_zzz_3.123563_1_388_- 0.1240310 0.06666667
          C         D         E         F         G         H         I
1 0.1666667 0.2000000 0.3689320 0.4516129 0.3333333 0.4186047 0.3333333
2 0.2142857 0.1208791 0.2317881 0.2500000 0.4642857 0.3500000 0.1538462
3 0.1000000 0.1518987 0.2403101 0.1333333 0.3000000 0.2000000 0.2658228
          J         K
1 0.7631093 0.7111422
2 0.6350023 0.6123724
3 0.7236342 0.5617433

今は大丈夫そうです。ただし、これらは、サンプル名を少し隠した後、Excel で再保存した入力ファイルからのものです。元のファイルでは、次のような結果が得られました。

tabletab1[1:3,] name A xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.2427184 0.35483871 xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_+ 0.1523179 0.18750000 xxx_NODE_52133_yyy_348_zzz_3.123563_1_388_- 0.1240310 0.06666667 B xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.1666667 xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_+ 0.2142857 xxx_NODE_52133_yyy_348_zzz_3.123563_1_388_- 0.1000000 C xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.2000000 xxx_NODE_22738_yyy_415_zzz_2 .453012_1_455_+ 0.1208791 xxx_NODE_52133_yyy_348_zzz_3.123563_1_388_- 0.1518987

したがって、「名前」列は他のすべての列に含まれていました。含まれているこれらのファイルは、"\t" と "\n" に他のメタ文字を使用しているように見える UNIX で実行される Java プログラムで生成されたものです (テキスト エディターではこれを確認できませんでした)。 UNIX マシンで Java プログラムを実行し、Windows オペレーティング システムで Excel を使用してテーブルを再保存した後、テーブルがうまく機能するのがおかしい場合は、Unix マシンでも R を実行しますか? また、任意のテーブルで Dos2Unix を実行すると、これらの問題を引き起こすこれらのメタ文字が再び取得されます。

4

0 に答える 0