我想删除带有特定字符串“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中有效。如果有人有其他选择......
答案 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
上执行此操作的方式需要复制。