データフレームをRからテキストファイルに変換しようとしています。
データセットは約1500x700で、データフレームをループするのに時間がかかります。プロセスを高速化する方法があるかどうか疑問に思っています。
私のデータフレームは次のようなものです。
>train2
score x1 x2 x3 x4 x5 ... x700
0 0 1 1 1 0 0
1 0 1 0 0 0 0
0 1 0 1 1 1 0
3 0 1 1 1 0 0
1 0 1 0 1 0 0
2 1 1 1 1 0 1
0 0 1 1 0 0 0
... . . . . . .
作成されたファイルには、ゼロ以外のセルのみが含まれています。
したがって、行1〜3の出力は次のようになります。
0 | x2:1 x3:1 x4:1
1 | x2:1
0 | x1:1 x3:1 x4:1
私の現在のコードは次のように実行されます:
pt1 <- paste(train2$score," | ",sep="")
collect1 <- c()
for(j in 1:nrow(train2)){
word1 <- pt1[j]
for(i in 10:ncol(train2)){
if(train2[j,i] !=0){
word1 <- paste(word1,colnames(train2)[i],":",train2[j,i], " ", sep="")
}
}
collect1 <- c(collect1, word1)
if(j %% 100 == 0){
print(j);flush.console()
gc()
}
}
各実行には約3〜4分かかります。パフォーマンスを改善するために明らかなことはありますか?
編集:ループが完了した後、結果のデータフレームcollect1
は、以下を使用してテキストファイルを作成するために使用されます。
write(collect1, file="outPut1.txt")