相関行列の各行を別々のファイルに分割する

相関行列の各行を別々のファイルに分割する

私は22000個の遺伝子を含む相関行列を持っており、いくつかの分析を実行するには、行列の各行を新しいファイルに分割する必要があります。これは、22,000個の別々のファイルを生成する必要があることを意味します。

入力ファイルの例に対して(gene_name.txtという名前の出力ファイルをインポートしたいので)、分割コマンドを使用したくありません。

                IGHD2-15    IGHD3-22    IGHD3-16    IGHD3-10    
       IGHD2-15 1   0.696084    0.799736    0.818788    
       IGHD3-22 0.696084    1   0.691419    0.67505 
       IGHD3-16 0.799736    0.691419    1   0.810656    
       IGHD3-10 0.818788    0.67505 0.810656    1   

ベストアンサー1

遺伝子名が最初の列にあると仮定すると、必要なものは次のとおりです。

awk '{print >> $1".txt"; close(n".txt")}' matrix.txt

これにより、行の最初のフィールドに拡張子(完全にオプション)が付いたファイルに各行が印刷されます.txt。ファイルに遺伝子名を含めない場合は、次のようにします。

awk '{n=$1; $1="";print >> n".txt"; close(n".txt")}' matrix.txt

最初の行がヘッダーの場合は、次を使用してください。

awk 'NR>1{print >> $1".txt"; close($1".txt")}' matrix.txt

最後に、最初のフィールドが単純な遺伝子名ではなく、NULLまたは有効なパスを含む可能性があるため、ファイルに行を含めることができるため、入力を削除する必要がある場合は、次のようにします。

awk 'NR > 1 && ($1 ~ /^[A-Z0-9-]+$/) { print >> $1; close($1) }'

おすすめ記事