小编Plu*_*end的帖子

循环遍历数组以使用 Perl 比较两个值

我有一个大型数据集(29 列 x 19000 行),我希望能够比较每一行的值并打印描述性输出。

具体来说,我想查询 A 列(@WTcall)中的值,这实际上是一个通过/失败语句。如果数据失败,我想打印“失败声明”并移至下一行,但如果数据通过,我想继续描述数据。

接下来的问题是确定 X (@positive) 和 Y (@negative) 列中的数据属于哪种分类:

(前任:

如果 X 列和 Y 列 >= 0.6,则打印“ABC”

如果 X 列和 Y 列 < 0.6,则打印“CBA”

如果 X 列 >= 0.6 但 Y 列 < 0.6 打印“DEF”

如果 X 列 < 0.6 但 Y 列 >= 0.6 打印“FED”

否则打印“缺少数据”。)

我已经包含了我在下面编写的代码以及示例数据的子集。

我在发布之前运行的测试在代码中被注释掉了。简而言之,如果我注释掉“if 和 elsif 语句”列表,请打印“@WTcall\t@positive\t@negative\n”并将其通过 head 命令传送 - 我的变量似乎正在提取正确的信息。

问题出现在实际比较中,因为每一行都被分类为“Methylated\tMethylated\n”描述。我不清楚这是为什么。我知道我有 @WTcall 列应该匹配 $BadPosition(通过/失败检查)的条目。此外,如果我再次注释掉“if 语句”,则打印“@WTcall\n$BadPosition”并将其通过 sort 和 uniq 进行管道传输 - 我只得到“No_WT_Concensus”的一个值,因此那里应该没有拼写错误或匹配问题这些值。

我确信这个问题很明显并且正直盯着我的脸,所以我真的很感激任何帮助。

谢谢你。

代码:

#!/usr/bin/perl

use strict;
use …
Run Code Online (Sandbox Code Playgroud)

perl foreach if-statement

2
推荐指数
1
解决办法
298
查看次数

标签 统计

foreach ×1

if-statement ×1

perl ×1