搜索
查看: 2865|回复: 4

[assembly] 求助perl文件行列转置

[复制链接]

1

主题

1

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2017-4-13 14:02:11 | 显示全部楼层 |阅读模式
想要把一个文件的行列转置,找到一段perl代码可以实现,但是遇到0的时候却转换成了空,不知道如何修改代码,请各位帮忙。
[Perl] 纯文本查看 复制代码
#! /usr/bin/perl -w  
use strict;  
die "perl $0 \n" unless @ARGV==1;  
my $lst=shift;  
open IN,$lst;  
my (@a,@b);  
my $len;  
my $max=0;  
while(<IN>){  
        chomp;  
        @b=split/\t/,$_;  
        $len=@b;  
        $max=$max > $len ? $max:$len;  
        push @a,[@b];  
}  
close IN;  
for my $i(0..$max-1){  
        for(@a){  
                @$_[$i]||="";  
                print "@$_[$i]\t";  
        }  
        print "\n";  
}  
__END__ 


原输入文件:
1        0        7
5        0        2
8        0        3
7        0        4
7        0        6
4        0        9
9        0        3


输出文件:
1        5        8        7        7        4        9       
                                                       
7        2        3        4        6        9        3       

带零的那一列都没有输出,全是空,如何修改上边的程序呢?
回复

使用道具 举报

634

主题

1182

帖子

4030

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4030
发表于 2017-4-13 15:07:52 | 显示全部楼层
如果你只想做行列转置,用这么复杂的代码干嘛???
自己去搜索一下二维数组或者hash即可,而且,推荐直接用R里面的函数t即可,或者excel表格里面也可以
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 反对

使用道具 举报

0

主题

3

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2017-5-1 14:21:12 | 显示全部楼层
使用perl二维数组达到目的。
[Perl] 纯文本查看 复制代码
#!usr/bin/perl-w
open FH, "< filename",or die$!; #filename为要操作的文件名
$i=0;$a=0;
while(<FH>){
        chomp;
        @array2=split/\s+/;
        @array[$i]=([@array2]);
        $i=$i+1;
}
#foreach (@array)#输出二维数组,测试是否读取成功。
#{print "\t[@$_],\n";}
$n=@array2;
while($a<$n){   
        foreach(0..$i){
        print"$array[$_][$a]\t";
}
print"\n";
$a=$a+1;
}
close FH;
回复 支持 反对

使用道具 举报

0

主题

17

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2017-9-11 16:58:14 | 显示全部楼层
[Sass] 纯文本查看 复制代码
input <- read.table("num_matrix.txt")
t(input)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-8-23 07:27 , Processed in 0.039748 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.