R 重新格式化基因关联文件

R 重新格式化基因关联文件,r,bash,awk,R,Bash,Awk,我有一个文本文件,三列选项卡分开: 第1列:基因ID 第二列:一个值 第3列:与第1列中的基因相关的基因列表,以逗号分隔(基因数量可能因行而异) 等等 我想要的是: TMCS09g1008699 6.4 TMCS09g1008677 TMCS09g1008699 6.4 TMCS09g1008681 TMCS09g1008699 6.4 TMCS09g1008685 TMCS09g1008690 5.3 TMCS09g1008686 TMCS09g1008690 5.3 TMCS09g10086

我有一个文本文件,三列选项卡分开:
第1列:基因ID
第二列:一个值
第3列:与第1列中的基因相关的基因列表,以逗号分隔(基因数量可能因行而异)

等等

我想要的是:

TMCS09g1008699 6.4 TMCS09g1008677
TMCS09g1008699 6.4 TMCS09g1008681
TMCS09g1008699 6.4 TMCS09g1008685
TMCS09g1008690 5.3 TMCS09g1008686
TMCS09g1008690 5.3 TMCS09g1008680
TMCS09g1008690 5.3 TMCS09g1008675
TMCS09g1008690 5.3 TMCS09g1008690
有人能帮我吗?

$awk'BEGIN{FS=OFS=“\t”}
$ awk 'BEGIN{FS=OFS="\t"} 
            {n=split($3,f3,","); 
             for(i=1;i<=n;i++) 
               print $1,$2,f3[i]}' file
{n=拆分($3,f3,“,”); 对于(i=1;i
$awk'BEGIN{FS=OFS=“\t”}
{n=拆分($3,f3,“,”);

对于(i=1;i,这里有一个R解决方案,使用来自
tidyverse
的包:

library(tidyverse);
df %>%
    mutate(V3 = str_split(V3, ",")) %>%
    unnest();
#              V1  V2             V3
#1 TMCS09g1008699 6.4 TMCS09g1008677
#2 TMCS09g1008699 6.4 TMCS09g1008681
#3 TMCS09g1008699 6.4 TMCS09g1008685
#4 TMCS09g1008690 5.3 TMCS09g1008686
#5 TMCS09g1008690 5.3 TMCS09g1008680
#6 TMCS09g1008690 5.3 TMCS09g1008675
#7 TMCS09g1008690 5.3 TMCS09g1008690
说明:
str_split
第3列基于
”,“
;用
unest
展开生成的
列表
条目


样本数据
df这是一个R解决方案,它使用了来自
tidyverse
的包:

library(tidyverse);
df %>%
    mutate(V3 = str_split(V3, ",")) %>%
    unnest();
#              V1  V2             V3
#1 TMCS09g1008699 6.4 TMCS09g1008677
#2 TMCS09g1008699 6.4 TMCS09g1008681
#3 TMCS09g1008699 6.4 TMCS09g1008685
#4 TMCS09g1008690 5.3 TMCS09g1008686
#5 TMCS09g1008690 5.3 TMCS09g1008680
#6 TMCS09g1008690 5.3 TMCS09g1008675
#7 TMCS09g1008690 5.3 TMCS09g1008690
说明:
str_split
第3列基于
”,“
;用
unest
展开生成的
列表
条目


样本数据
df我会将第一个文件中的字符串读入一些数据结构,比如字典,然后以稍微不同的方式将字典中的内容再次打印出来。我认为Python、Ruby或Javascript对于这样的任务来说是不错的语言,但这在某种程度上是一个品味问题。无论如何,正如现在所说的,您的在我看来,这个问题有点太宽泛了。你基本上是在要求人们免费为你编写代码。我建议你先尝试为自己想出一个解决方案,展示你做了什么,然后问一个更具体的问题。我会将第一个文件中的字符串读入一些数据结构,比如字典,然后打印出来我认为Python、Ruby或Javascript对于这样的任务来说是很好的语言,但这在某种程度上是一个品味问题。无论如何,正如现在所说的,我认为你的问题有点太宽泛了。你基本上是要求人们免费为你写代码。我建议您首先尝试为自己想出一个解决方案,展示您所做的,然后问一个更具体的问题。非常感谢。如果我从这里很好地理解了%>%是由tidyverse使用的(从dplyr导入)它只是提高了函数的可读性。对吗?是的,
%%>%%
是来自
magrittr
的管道操作符(通过
tidyverse
导入),您可以使用它将值通过管道转发到表达式/函数以链接命令。有关详细信息,请参阅。非常感谢。如果我从这里很好地理解了%>%是由tidyverse(从dplyr导入)使用的,它只是提高了函数的可读性。对吗?是的,
%%>
magrittr
中的管道运算符(通过
tidyverse
)导入),您可以使用它将值前推到表达式/函数中,以链接命令。有关详细信息,请参阅。
df <- read.table(text =
    "TMCS09g1008699 6.4 'TMCS09g1008677,TMCS09g1008681,TMCS09g1008685'
TMCS09g1008690 5.3 'TMCS09g1008686,TMCS09g1008680,TMCS09g1008675,TMCS09g1008690'", header = F)