ここでこれと同様の問題を見つけました: R の文字列内の単語数を数えますか? ここで 、Rを使用して文字列を分割し、文字をカウントするより高速な方法は? しかし、私の例ではどちらも機能しません。私はかなり大きなデータフレームを持っています。列の 1 つは機能のゲノム位置を示し、エントリは次のようにフォーマットされます。
[hg19:2:224840068-224840089:-]
[hg19:17:37092945-37092969:-]
[hg19:20:3904018-3904040:+]
[hg19:16:67000244-67000248,67000628-67000647:+]
これらの要素を個々の要素に分割して、次のものを取得しています(つまり、最初のエントリの場合):
hg19 2 224840068 224840089 -
しかし、4番目のエントリの場合、これを2つの別々の場所に貼り付けたいと思います. すなわち
hg19:16:67000244-67000248,67000628-67000647:+]
になる
hg19 16 67000244 67000248 +
hg19 16 67000628 67000647 +
(隣接する列のすべての関連データが元から埋められた状態で)
このアクションが必要な行を特定する簡単な方法は、カンマ「,」で行を数えることです。これは、機能のゲノム位置が複数ある場合を除いて、他の列の他のテキストには表示されないためです。ただし、sapply コマンドがすべてのエントリに対して誤って '1' を返すため、最初のハードルで失敗しています。
testdat$multiple <- sapply(gregexpr(",", testdat$genome_coordinates), length)
(また)
testdat$multiple <- sapply(gregexpr("\\,", testdat$genome_coordinates), length)
table(testdat$multiple)
1
4
上に投稿した例を使用すると、出力は次のようになると予想されます
testdat$multiple
0
0
0
1
実際やってる
grep -c
コマンド ラインの同じデータに、「,」を含むエントリが 10 個あることが示されます。
上に投稿した例を使用すると、出力は次のようになると予想されます
したがって、最初はこれを機能させたいと思っていますが、2つ(またはそれ以上)の場所を抽出して独自の行に配置し、隣接するデータを埋める方法についてのアイデアにも少し困惑しています。実際に私が意図したことは、(コマンド ラインで) 知っていること (コマンド ラインで) に固執することでした。彼ら。Rでこれを行うためのより優れた方法があれば、ポインターが大好きです。