【发布时间】:2013-07-31 17:08:21
【问题描述】:
我有一个这样的制表符分隔文件:
RS1->2001 HAPLO1 AAACAAGGAGGAGAAGGAAA ...
RS1->2001 HAPLO2 CAACAAAGAGGAGAAGGAAA ...
RS1->2002 HAPLO1 AAAAAAGGAGGAAAAGGAAA ...
RS1->20020 HAPLO2 CAACAAGGAGGAAGCAGAGC ...
RS1->20021 HAPLO2 CAACAAGGAGGAAGCAGAGC ...
在 R 中,我们可以轻松阅读这三列,我的问题是我需要逐个字符分隔第三列。最终结果应该是这样的:
RS1->2001 HAPLO1 A A A C ...
RS1->2001 HAPLO2 C A A C ...
RS1->2002 HAPLO1 A A A A ...
RS1->20020 HAPLO2 C A A C ...
RS1->20021 HAPLO2 C A A C ...
我可以先读取其中的 3 列,然后将第 3 列的每个条目拆分为字符,但这很烦人,我非常希望从一开始就做好。
如果前两列不存在,我可以用
实现目标read.fwf('test.csv', widths=rep(1, 300))
我正在考虑是否可以使用制表符分隔符读取前 2 列,然后以固定宽度读取第 3 列。
【问题讨论】:
-
strsplit应该可以与split = ""一起正常工作。 -
你可以像往常一样阅读你的文件(比如
SplitMe <- read.csv("test.csv"))。然后,假设您的第三列称为“V3”,您可以使用read.fwf(file=textConnection(SplitMe$V3), widths = rep(1, 20))将其拆分。将两者结合起来:cbind(SplitMe[-3], read.fwf(file=textConnection(SplitMe$V3), widths = rep(1, 20))应该在这个例子中做到这一点。根据实际数据的需要替换数字。 -
@AnandaMahto 那太好了。您为什么不将其发布为答案?我很乐意接受。
-
@CravingSpirit,完成。我最初没有将其作为答案发布,因为看起来您已经找到了
read.fwf的答案——但我猜您错过了textConnection部分。出于某种原因,虽然read.table等得到了text参数,但read.fwf仍然卡在file参数上。
标签: r io data-manipulation