2

私は、染色体と塩基位置のようなデータで満たされた列を持つデータフレームをすべて1つの列に持っています。同様の data.frame をシミュレートするために、V2 から V5 までの残りの列に整数を入力しました。

> test
             V1 V2 V3 V4 V5
1     I.1286480  9 17 25 33
2     I.1898932 10 18 26 34
3    I.11871397 11 19 27 35
4    II.1252994 12 20 28 36
5   II.18175911 13 21 29 37
6  III.10298347 14 22 30 38
7  IV.123478912 15 23 31 39
8 V.12837471234 16 24 32 40

次の列の他のデータと共に。これは 115,000 行の巨大なデータ セットです。ローマ数字 (I、II、III、IV、V) を含む列と、ローマ数字に続く数字を含む列の 2 つの新しい列を作成したいと考えています。私が問題を抱えている問題は、これが文字オブジェクトのベクトルであるため、数字から文字を解析する方法がわかりません。DescTools パッケージの StrPos を使ってみたのですが、

> StrPos(test$V1, "I")
[1]  1  1  1  1  1  1  1 NA
> StrPos(test$V1, "I.")
[1]  1  1  1  1  1  1  1 NA

「I」のインスタンスが 1 つあるオブジェクトだけでなく、すべての「I」の位置を返します。私はsubstringうまくいくかどうか疑問に思っていますか?しかし、すべてのローマ数字の長さが異なるだけでなく、ローマ数字に続く数字も異なる長さであるという問題があります。この問題には簡単な解決策があるに違いないことはわかっていますが、考えられるのは非常に長くループすることだけforですif。助けてください、stackoverflow、あなただけが私の希望です!

4

1 に答える 1