删除具有特定字符串的文本文件中的列

时间:2014-04-17 10:20:50

标签: r string bash specification-pattern

我想删除带有特定字符串“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中有效。如果有人有其他选择......

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您也可以尝试使用&#39; data.table&#39;打包并分配列NULL:

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

&#34; data.table&#34;尝试完成大部分操作而无需复制。您在data.frame上执行此操作的方式需要复制。