我有一个长文件,只写为一列 该列包含基因名称,后跟冒号(:),然后是microRNA片段的名称。 不幸的是,microRNA名称可能还包含冒号(:)。
我想用标签(\ t)替换仅 第一个冒号,然后使用write.table在R中生成两列。
以下是一个具有多个microRNA的基因名称的代表性样本:
CHD5:miR-329/362-3p:2
CHD5:miR-329/362-3p:1
CHD5:miR-30a/30a-5p/30b/30b-5p/30cde/384-5p
CHD5:miR-15/16/195/424/497
CHD5:miR-26ab/1297
CHD5:miR-17-5p/20/93.mr/106/519.d
CHD5:miR-130/301
CHD5:miR-19
CHD5:miR-204/211
有什么建议吗?
答案 0 :(得分:3)
也许使用sub
代替gsub
?
答案 1 :(得分:3)
如果你有'inFile'并想要'outFile',这里有一个更完整的例子......
lines <- readLines('inFile')
lines <- sub(':', '\t', x)
writeLines(lines, 'outFile')
答案 2 :(得分:2)
如果x
是您的列或向量:
sub(":", "\t", x)
请参阅?sub
,其中包含
'sub'和'gsub'执行第一次和所有匹配的替换 分别
答案 3 :(得分:2)
如果您使用sed
可以,则可以执行以下操作(假设您的数据位于名为data.txt
的文件中)。
sed 's/\([^:]\):/\1 /' data.txt
\1
之后的空格实际上是一个标签。要将它插入我的shell,我需要执行Ctrl-v,&lt; tab&gt;。
这是运行命令后的结果:
CHD5 miR-329/362-3p:2
CHD5 miR-329/362-3p:1
CHD5 miR-30a/30a-5p/30b/30b-5p/30cde/384-5p
CHD5 miR-15/16/195/424/497
CHD5 miR-26ab/1297
CHD5 miR-17-5p/20/93.mr/106/519.d
CHD5 miR-130/301
CHD5 miR-19
CHD5 miR-204/211