1

私は葉巻の非常に大きなベクトルを持っています:

my.vector = c("44M2D1I","32M465N3M", "3S4I3D45N65M")

分割された葉巻のベクトルに変換したい - ロジックは次のとおりです: 数値の後に N が続く場合は常に、それを分割する必要があります。そのため、「32M465N3M」を「32M」に分割しました。 465N"、"3M"; 「3S4I3D45N65M」から「3S4I3D」、「45N」、「65M」。「44M2D1I」は「N」がないため分割されませんでした。

my.vector.split = c("44M2D1I, "32M", "465N", "3M", "3S4I3D", "45N", "65M").

私のベクトルは非常に大きいので、理想的にはクラスターの並列機能を使用したいと考えています。ncores で mclapply を使用したいと思います。

理想的には、次のように定義したいと思います。

 my.vector.split = unlist(mclapply(my.vector, my.splitting.function, mc.cores = ncores))

ここで、my.vector.split の長さは length(my.vector) + (N の数)*2 です。

ノート。私が使用している HPC クラスターには最新の生体伝導体がインストールされていないため、cigartoRleList やその他の優れた葉巻操作ツールを使用できません。

4

1 に答える 1

1

これは適用できるはずです。詳細はクラスターの設定方法によって異なりますが、基本的には一連のデータフレームが返されます。それらをベクトルとして使用する場合は、次のようにラップunlistします。

 lapply(gsub("([[:digit:]]+N)", ",\\1,", my.vector) , 
         function(x) unlist( read.table(text=x,sep=",",colClasses="character")) )
#------------
[[1]]
       V1 
"44M2D1I" 

[[2]]
    V1     V2     V3 
 "32M" "465N"   "3M" 

[[3]]
      V1       V2       V3 
"3S4I3D"    "45N"    "65M" 
于 2013-09-28T18:17:59.547 に答える