3

我想删除带有特定字符串“Gtype”的列。来自 .txt 制表符分隔的文件。我已经在 R: 中尝试过这个命令df <- df[, -grep("GType.", colnames(df))]来完成这个任务。但是我的矩阵太大(超过 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”尝试在不复制的情况下完成大部分操作。您在data.frames 上执行此操作的方式需要制作副本。

于 2014-04-17T13:36:08.417 回答