Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何强制sort命令放置';ADNP-AS1';在'之后;ADNP2';而不是反过来?_Linux_Sorting - Fatal编程技术网

Linux 如何强制sort命令放置';ADNP-AS1';在'之后;ADNP2';而不是反过来?

Linux 如何强制sort命令放置';ADNP-AS1';在'之后;ADNP2';而不是反过来?,linux,sorting,Linux,Sorting,我正在对一个包含基因表达数据的文本文件进行排序,我需要将基因名称按照一定的顺序排列,以完成后续任务。我正在使用一个.sh脚本来完成几个任务,包括排序。有些基因的名字几乎相同;一个很好的例子是序列“ADNP”、“ADNP2”、“ADNP-AS1”。排序时我需要连字符的基因名排在最后,但现在它排在第二位 我原以为添加LC_CTYPE=“en_us.UTF-8”和LC_COLLATE=“en_us.UTF-8”选项进行排序可以解决问题,因为这些是在不同的本地机器上工作的区域设置选项。然而,我一直得到同

我正在对一个包含基因表达数据的文本文件进行排序,我需要将基因名称按照一定的顺序排列,以完成后续任务。我正在使用一个.sh脚本来完成几个任务,包括排序。有些基因的名字几乎相同;一个很好的例子是序列“ADNP”、“ADNP2”、“ADNP-AS1”。排序时我需要连字符的基因名排在最后,但现在它排在第二位

我原以为添加LC_CTYPE=“en_us.UTF-8”和LC_COLLATE=“en_us.UTF-8”选项进行排序可以解决问题,因为这些是在不同的本地机器上工作的区域设置选项。然而,我一直得到同样的结果

我已经尝试过使用echo-e“ADNP-ADNP2 ADNP-AS1”排序,以及排序上的各种选项。当我这样做时,我得到了正确的顺序。但是,当运行shell脚本(如下所示)时,我不会这样做。我还将提供

下面是shell脚本的摘录 这是我的区域设置
以下是R中的一个最小可重复示例:

> geneSamp <- c("ADNP", "ADNP-AS1", "ADNP2")
> sampExprVals <- c(10, 20, 0)
> geneDF <- data.frame(geneSamp, sampExprVals)
> correctGeneOrder <- data.frame(a = c("ADNP", "ADNP2", "ADNP-AS1"), b = c(10, 0, 20))
> geneDF <- geneDF[order(match(correctGeneOrder[, 1], geneDF[, 1])),]
> print(geneDF)
  geneSamp sampExprVals
1     ADNP           10
3    ADNP2            0
2 ADNP-AS1           20
>geneSamp sampExprVals geneDF correctedgeneordgenedf打印(geneDF)
基因多态性
1 ADNP 10
3 ADNP2 0
2 ADNP-AS1 20

不幸的是,我仍然不知道如何修复问题的根源,但这是一个相当简单的解决方法,很容易实现到我们已经运行的解析循环中

这是R中一个最小的可重复性示例:

> geneSamp <- c("ADNP", "ADNP-AS1", "ADNP2")
> sampExprVals <- c(10, 20, 0)
> geneDF <- data.frame(geneSamp, sampExprVals)
> correctGeneOrder <- data.frame(a = c("ADNP", "ADNP2", "ADNP-AS1"), b = c(10, 0, 20))
> geneDF <- geneDF[order(match(correctGeneOrder[, 1], geneDF[, 1])),]
> print(geneDF)
  geneSamp sampExprVals
1     ADNP           10
3    ADNP2            0
2 ADNP-AS1           20
>geneSamp sampExprVals geneDF correctedgeneordgenedf打印(geneDF)
基因多态性
1 ADNP 10
3 ADNP2 0
2 ADNP-AS1 20
不幸的是,我仍然不知道如何修复问题的根源,但这是一个相当简单的解决方法,很容易实现到我们已经运行的解析循环中

使用echo-e“ADNP ADNP2 ADNP-AS1”| sort…,我得到了正确的顺序

这也就不足为奇了,因为名称已经在一行中按所需的顺序排列,而且
sort
不会改变一行中的词序。相比之下

echo -e "ADNP\nADNP2\nADNP-AS1"|sort
产生不需要的订单

ADNP
ADNP-AS1
ADNP2
我仍然不知道如何解决问题的根源

如图所示,如果连字符后面有一个字母,
sort-d
(只考虑空格和字母数字字符)将生成所需的顺序

使用echo-e“ADNP ADNP2 ADNP-AS1”| sort…,我得到了正确的顺序

这也就不足为奇了,因为名称已经在一行中按所需的顺序排列,而且
sort
不会改变一行中的词序。相比之下

echo -e "ADNP\nADNP2\nADNP-AS1"|sort
产生不需要的订单

ADNP
ADNP-AS1
ADNP2
我仍然不知道如何解决问题的根源


如图中所示,如果连字符后有一个字母,则排序-d(只考虑空格和字母数字字符)会产生所需的顺序。

这里的实验很好。如果您的时间不够,我会添加一个新的列,其中的值经过重新格式化,以便记录能够正确排序。然后可以去掉该列,或者在后续处理中忽略它。祝你好运@Shelleter我实际上在我们的解析管道(在R中)的后面添加了一行代码,基于我找到的代码
x2[顺序(匹配(x2[,1],x1[,1]),]
。解决方法就是将每个表达式集迭代地匹配到一个参考基因列表。很高兴您对其进行了排序。如果您可以通过小样本数据集和所需输出使其更具吸引力,那么您就可以回答自己的问题并获得宝贵的声誉积分(48小时后?)。并学习从所选文本的编辑菜单中使用
{}
工具,以获得代码/数据/errMsgsEtc的正确格式。祝你好运这是一个很好的实验。如果您的时间不够,我会添加一个新的列,其中的值经过重新格式化,以便记录能够正确排序。然后可以去掉该列,或者在后续处理中忽略它。祝你好运@Shelleter我实际上在我们的解析管道(在R中)的后面添加了一行代码,基于我找到的代码
x2[顺序(匹配(x2[,1],x1[,1]),]
。解决方法就是将每个表达式集迭代地匹配到一个参考基因列表。很高兴您对其进行了排序。如果您可以通过小样本数据集和所需输出使其更具吸引力,那么您就可以回答自己的问题并获得宝贵的声誉积分(48小时后?)。并学习从所选文本的编辑菜单中使用
{}
工具,以获得代码/数据/errMsgsEtc的正确格式。祝你好运在发帖后,我意识到,以我现在的方式进行排序的实验并没有正常工作。谢谢你的修复。我在发帖后确实意识到,以我现在的方式进行排序的实验并没有正常工作。谢谢你的修复。