1
1. ZFP112
Official Symbol: ZFP112 and Name: zinc finger protein 112 homolog (mouse)[Homo sapiens]
Other Aliases: ZNF112, ZNF228
Other Designations: zfp-112; zinc finger protein 112; zinc finger protein 228
Chromosome: 19; Location: 19q13.2
Annotation: Chromosome 19NC_000019.9 (44830706..44860856, complement)
ID: 7771

2. SEP15
15 kDa selenoprotein[Homo sapiens]
Chromosome: 1; Location: 1p31
Annotation: Chromosome 1NC_000001.10 (87328128..87380107, complement)
MIM: 606254
ID: 9403

3. MLL4
myeloid/lymphoid or mixed-lineage leukemia 4[Homo sapiens]
Other Aliases: HRX2, KMT2B, MLL2, TRX2, WBP7
Other Designations: KMT2D; WBP-7; WW domain binding protein 7; WW domain-binding protein 7; histone-lysine N-methyltransferase MLL4; lysine N-methyltransferase 2B; lysine N-methyltransferase 2D; mixed lineage leukemia gene homolog 2; myeloid/lymphoid or mixed-lineage leukemia protein 4; trithorax homolog 2; trithorax homologue 2
Chromosome: 19; Location: 19q13.1
Annotation: Chromosome 19NC_000019.9 (36208921..36229779)
MIM: 606834
ID: 9757

37. LOC100509547
hypothetical protein LOC100509547[Homo sapiens]
This record was discontinued.
ID: 100509547

43. LOC100509587
hypothetical protein LOC100509587[Homo sapiens]
Chromosome: 6
This record was replaced with GeneID: 100506601
ID: 100509587

遺伝子名 (ZFP112、SEP15、MLL4)、Location フィールド (存在する場合)、ID フィールドを取得し、他のものをスキップしたいと考えています。scan() のようなすべての文字列ユーティリティは、より規則的なデータを対象としているようです。レコード間の空白行は、実質的にレコード区切りです。これをディスクに書き込んで readLines() で読み戻すことはできますが、HTTP 経由でダウンロードしたので、メモリから読み込もうと思います。

4

1 に答える 1

4

たとえば、からデータを読み取ります"myfile.dat"(または、L以前に別の行として読み取った場合は、下から開始します)。ここで、数字で始まり、ドットとスペースが続く行、または単語Location:or で始まる行を抽出しID:ます。次に、最後のスペースまで、それらの行のすべてを削除します。の各成分が属するgグループを識別するグループ ベクトルを作成します。v2(各グループの最初のフィールドが非数字で始まり、他のフィールドが数字で始まるという事実を使用しました。) 次にv2、それらのグループに分割します。sNA を適切に挿入してショート コンポーネントを拡張します。ショートLocation:が欠落している場合。(最初のフィールドとIDフィールドが欠落することはありません。) 最後に、フィールドが列に、ケースが行になるように転置します。

L <- readLines("myfile.dat")
v <- grep("^\\d+\\. |Location: |^ID: ", L, value = TRUE)
v2 <- sub(".* ", "", v)

g <- cumsum(regexpr("^\\D", v2) > 0)
s <- split(v2, g)
m <- sapply(s, function(x) if (length(x) == 2) c(x[[1]], NA, x[[2]]) else x)
t(m)

投稿のサンプル データを使用すると、最後の行から次のようになります。

  [,1]           [,2]      [,3]       
1 "ZFP112"       "19q13.2" "7771"     
2 "SEP15"        "1p31"    "9403"     
3 "MLL4"         "19q13.1" "9757"     
4 "LOC100509547" NA        "100509547"
5 "LOC100509587" NA        "100509587"
于 2013-04-15T23:59:01.727 に答える