Linux 如何强制sort命令放置';ADNP-AS1';在'之后;ADNP2';而不是反过来?
我正在对一个包含基因表达数据的文本文件进行排序,我需要将基因名称按照一定的顺序排列,以完成后续任务。我正在使用一个.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脚本的摘录 这是我的区域设置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”选项进行排序可以解决问题,因为这些是在不同的本地机器上工作的区域设置选项。然而,我一直得到同
以下是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的正确格式。祝你好运在发帖后,我意识到,以我现在的方式进行排序的实验并没有正常工作。谢谢你的修复。我在发帖后确实意识到,以我现在的方式进行排序的实验并没有正常工作。谢谢你的修复。