如何在perl中加倍数据框中的列

时间:2014-05-22 18:23:44

标签: perl

我有一个大数据框,如下所示:

    name1   A   A   G
    name2   C   C   T
    name3   A   G   G
    name4   H   G   G
    name5   C   -   T
    name6   C   C   C
    name7   A   G   G
    name8   G   G   A

我希望数据框改为:

    name1   A   A   A   A   G   G
    name2   C   C   C   C   T   T
    name3   A   A   G   G   G   G
    name4   H   H   G   G   G   G
    name5   C   C   -   -   T   T
    name6   C   C   C   C   C   C
    name7   A   A   G   G   G   G
    name8   G   G   G   G   A   A

我尝试使用R来执行此操作,但内存限制不允许我这样做。请帮我解决perl问题。我不知道如何编写perl脚本。谢谢。

2 个答案:

答案 0 :(得分:4)

perl -lane'
  BEGIN { $, ="\t" }
  print shift(@F), map{ ($_)x2 } @F
' file

输出

name1   A       A       A       A       G       G
name2   C       C       C       C       T       T
name3   A       A       G       G       G       G
name4   H       H       G       G       G       G
name5   C       C       -       -       T       T
name6   C       C       C       C       C       C
name7   A       A       G       G       G       G
name8   G       G       G       G       A       A

答案 1 :(得分:2)

使用perl one-liner

perl -lane 'print join "\t", shift(@F), map {($_) x 2} @F' data.txt