为什么我在输出文件中看不到计算结果?

2023-12-27

这是后续如何对制表符分隔的数据文件中的列值进行平均,忽略标题行和左列? https://stackoverflow.com/questions/9677533/how-do-i-average-column-values-from-a-tab-separated-data-file-ignoring-a-header。任务是:打开并读取文件;到达每一行,将内容分成一个数组,并计算数值的平均值;最后将包含数值的每列的平均值写入新文件。

直到最后一刻,一切似乎都很顺利。问题是,虽然我可以创建一个新的.txt文件,该.txt文件本身没有输出中打印的内容。最好,作为 Perl 的新用户,我更愿意将脚本保留在下面编写的样式中,以便我可以更好地理解它。我不太喜欢可能存在的更简洁的版本。谢谢jchips12 https://stackoverflow.com/users/882628/jchips12因为非常有帮助。

无论如何,代码是:

#!/usr/bin/perl -w
use strict;
my $infile = "Lab1_table.txt"; # This is the file path
open INFILE, $infile or die "Can't open $infile: $!";
my $outfile = "Lab1_tableoutput.txt";
open OUTFILE, ">$outfile" or die "Cannot open $outfile: $!";

my $count = 0;
my @header = ();
my @average = ();

while (<INFILE>) {
    chomp;
    my @columns = split /\t/;
    $count++;
    if ( $count == 1 ) {
        @header = @columns;
    } else {
        for( my $i = 1; $i < scalar @columns; $i++ ) {
            $average[$i] += $columns[$i];
        }
    }
}

for( my $i = 1; $i < scalar @average; $i++ ) {
    print $average[$i]/($count-1), "\n";
}

print OUTFILE "\n";
close OUTFILE;

数据来自文件Lab1_table.txt如下:

retrovirus      genome  gag     pol     env
HIV-1           9181    1503    3006    2571
FIV             9474    1353    2993    2571
KoRV            8431    1566    3384    1980
GaLV            8088    1563    3498    2058
PERV            8072    1560    3621    1532

结果产生了正确的平均值,尽管在终端中有点混乱,并且它们没有对应于任何列号/名称进行标记。也.txt文件已生成,但没有输出。

结果如下:

Argument "" isn't numeric in addition (+) at line 25, <INFILE> line X
0
8649.2
1509
3300.4
2142.4

***Line X: Where X is either 2, 3, 4, 5, or 6.***

由此我可以推断“参数”错误指的是 5 个标题列,并且0到唯一具有非数字值的列。

帮助将文件写入.txt文件,或者以某种方式我可以读取命令行中所示的输出,将不胜感激。另外,虽然我模糊地知道代码的每个步骤发生了什么,但如果可能的话,我希望能更深入地了解大多数步骤中发生的情况。我仍在阅读它,但我希望能够清楚地理解更多细节。


为每一行指定注释,让您清楚理解

#!/usr/bin/perl -w 
use strict; 
use warnings;

my $infile = "Lab1_table.txt";                         # input file path 
open INFILE, $infile or die "Can't open $infile: $!";  # input file opened
my $outfile = "Lab1_tableoutput.txt";                  # output file path
open OUTFILE, ">$outfile" or die "Cannot open $outfile: $!"; # output file opened

my $count = 0;              # count variable to check for header row in file 
my @header = ();            # variable to store headers/column names of file
my @average = ();           # variable to store average calculated for each column

while (<INFILE>) {    
 chomp;
 my @columns = split /\s+/;   # \s stands for  [\ \t\r\n\f]
 $count++;    

 if ( $count == 1 ) {         
                    @header = @columns;      # executed only once for header 
      } 
 else {                                       # else column executed for remaining rows
        for( my $i = 1; $i < scalar @columns; $i++ ) {  # $i=1 means skip first column
              $average[$i] += $columns[$i];      # calcuate average for each row   
          }
      }
} 
for( my $i = 1; $i < scalar @average; $i++ ) {     

    print OUTFILE $average[$i]/($count-1), "\n";  # This will write to output file

    }     
close OUTFILE; 

Use print OUTFILE $average[$i]/($count-1), "\n";写入文件。

错误Argument "" isn't numeric in addition (+) at line 25, <INFILE> line X可能是如果您要添加的列中的值很可能包含字符串而不是数字。请检查您的输入文件。

注意:我没有收到上述错误。脚本使用上述数据运行顺利。但是,如果我将其中一个数字更改为字符串,则会收到此错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我在输出文件中看不到计算结果? 的相关文章

随机推荐

  • 如何在 Swift 中的泛型扩展中使用带有可选类方法的协议?

    我正在尝试使用类方法对现有类进行扩展 例如 objc public protocol MyProtocol optional class func foo gt Int 我在扩展中使用这个协议 通用如下 extension MyClass
  • 如果会话超时,MVC 中的 jquery ajax 调用后如何重定向到新页面?

    1 我有一个调用操作的Ajax链接 该操作返回一个视图 该视图在特定的Div中打开 将其视为使用相应视图更新div的菜单 2 如果会话超时 则返回我的登录视图 因此 如果我单击链接并且会话超时 登录视图将在 div 中打开 而不是在整个页面
  • 每天执行一次查询

    基本上我有一个MySQL数据库 其中有一个表存储我网站用户的请求 我想自动执行一个查询 删除所有已完成的请求 已完成意味着该列Status 3 根据该列 超过 180 天ArchivingDate My Requests table Req
  • 六个月内保留的参与者百分比

    我是一名学校老师 对 MS SQL Server 非常陌生 每个人都建议尝试一下这个网站 开始 我正在尝试编写查询来测试参与学术项目的不同类型的结果衡量标准 我想尝试几种不同的方法来计算这个结果测量 我试图计算的结果是 在该计划的六个月内保
  • 如何在不同的计算机上克隆 RStudio 环境

    我最近一直在加快使用 R 的速度 并且想知道最有效的方法是将 RStudio 环境 尤其是软件包安装 从一台计算机克隆到另一台计算机 我希望能够从台式机切换到笔记本电脑 但我在工作时经常向台式机添加软件包 并且希望有一种简单的方法来确保在笔
  • Python 中的持久记忆

    我有一个昂贵的函数 它接受并返回少量数据 一些整数和浮点数 我已经memoized http en wikipedia org wiki Memoization这个功能 但我想让备忘录持久化 已经有几个与此相关的线程 但我不确定某些建议方法
  • avformat_open_input 返回值,NaCl 模块上的错误代码

    我正在尝试将 FFmpeg 移植到我的 NaCl 模块中 到目前为止 我的模块链接了 ffmpeg 和 SDL 库 它已经可以播放 YUV 格式的视频 该视频被直接加载到内存中并复制到 YUVOverlay 缓冲区中 这非常简单 现在 我想
  • Excel 转 PDF 无需 Office

    我需要在我正在开发的 Windows 应用程序中生成 PDF 报告 我通过将 xlsx 文件导出为 pdf 来完成此操作 不过 我目前正在为此使用互操作 我需要在不要求用户购买软件的情况下执行此操作 因此不需要 Microsoft Offi
  • 分配大(32mb)连续区域

    是否有可能在运行时从内核代码分配大的 即 32mb 物理连续的内存区域 即不使用 bootmem 从我的实验来看 无论我使用什么 GFP 标志 似乎都不可能成功获得超过 4mb 的块 根据我读过的文档 GFP NOFAIL 应该让 kmal
  • iOS 模拟器游戏运行速度非常慢(低 fps)

    深入研究 sprite 套件 xcode 5 我正在使用两个示例程序 1 创建新项目时包含的默认宇宙飞船示例 2 我下载的冒险游戏 在 iOS 模拟器中运行这些示例 似乎哪个并不重要 每个的帧速率绝对是糟糕的 如果我在太空船 hello w
  • 以相同的 C# 形式从 web 浏览器链接到 ScintillaNET 编辑器?

    我是 ScintillaNET 的新手 我以相同的形式使用 webbrowser 和 scintillaNET 编辑器组件 我的任务是当我单击网络浏览器中的链接时 它应该链接到编辑器中的文本 任何帮助和建议将不胜感激 提前致谢 None
  • Azure ARM 模板和 REST API

    我正在尝试学习 Azure 资源模板 并尝试了解何时使用它们以及何时使用 REST API 背后的工作流程 我的感觉是 在 Azure 中创建虚拟网络和子网是相当罕见的情况 一旦您按照需要进行设置 就不会过于频繁地修改它 而是将内容部署到该
  • jQuery 中的弹出窗口

    我需要一个带有单选按钮选项的弹出窗口 我已经测试过Impromtu http en wikipedia org wiki Impromptu 28programming environment 29 有没有简单的 Popupwindow 插
  • 交换两条线

    我怎样才能使用 sedH h x g G等命令交换两行 例如在文件中 START this is a dog this is a cat this is something else END 假设我想用 这是别的东西 交换 这是一只狗 这是
  • 电子商务点击量未显示在 Google Analytics 测量协议中

    因为我在网站上接受 PayPal 付款 所以我尝试使用测量协议在服务器端发送交易详细信息 使用 PayPal 付款的访问者通常不会返回我的网站查看订单确认页面 因此依靠 IPN 来记录交易是更可靠的方式 我已经能够使用测量协议成功记录事件命
  • 将 Android 设备连接到 WiFi 打印机

    我想通过我的 Android 手机使用 wifi 以任何其他方式打印我的 pdf 文档 或者请给我一个关于是否可以将我们的设备连接到 wifi 打印机或发送我们的文档进行打印的建议 我希望我能尽快得到您方面的最佳答案或任何建议 我能想到的最
  • 多个 C# 应用程序可以使用一个 App.Config 文件吗?

    我们有许多在计划任务上运行的 C 控制台应用程序 所有这些应用程序都有自己的配置文件 其中包含诸如我们的 smtp 服务器之类的设置 如果我们的 smtp 服务器发生了变化 我们将必须手动进入每个配置文件并进行更改 多个应用程序是否可以查看
  • VS Code 中是否有光标覆盖/覆盖模式?

    我似乎找不到任何方法将光标置于 覆盖 模式 就像当您按下插入键并且新键入的字符会覆盖现有的内联字符一样 我没有在网上找到任何关于 VS Code 中省略或包含此类功能的参考 但它似乎是一个相当常用的功能 这存在吗 我也错过了 Visual
  • Sparql - 如果任何一个变量未绑定,则串联失败

    您好 我正在使用 AllegroGraph 和 Sparql 查询来检索结果 这是重现我的问题的示例数据 考虑下面的数据 其中一个人有名字 中间名和姓氏
  • 为什么我在输出文件中看不到计算结果?

    这是后续如何对制表符分隔的数据文件中的列值进行平均 忽略标题行和左列 https stackoverflow com questions 9677533 how do i average column values from a tab s