3

特定の文字列「Gtype」を含む列を削除したいと考えています。.txt タブ区切りファイルから。df <- df[, -grep("GType.", colnames(df))]このタスクを実行するために、R: でこのコマンドを既に試しました。ただし、マトリックスが大きすぎて (13 GB 以上)、R では処理できません。(エラー: サイズのベクトルを割り当てられません....)

私の入力ファイル:

Log.NE122  Gtype.NE122  Log.NE144    Gtype.NE144
-0.33          AA          1.0           AB

私の期待される出力:

   Log.NE122  Log.NE144  
    -0.33       1.0      

私はそれがbashで動作するのだろうかと思っています。誰かが他のオプションを持っている場合....

4

2 に答える 2

2

awk の使用:

awk 'NR==1{for (i=1; i<=NF; i++) if ($i ~ /Gtype/) a[i]; 
     else printf "%s%s", $i, OFS; print ""; next}
     {for (i=1; i<=NF; i++) if (!(i in a)) printf "%s%s", $i, OFS; print "" }' file
Log.NE122 Log.NE144
-0.33     1.0
于 2014-04-17T10:28:48.620 に答える
2

「data.table」パッケージを使用して、列に NULL を割り当てることもできます。

dt <- data.table(df)
dt[, colToDelete := NULL]

「data.table」は、コピーを作成することなく、ほとんどの操作を実行しようとします。sで行っている方法でdata.frameは、コピーを作成する必要があります。

于 2014-04-17T13:36:08.417 に答える