私が欲しかったフォーマットは「SVM-Light」と呼ばれ、ここで説明されていることがわかりましたhttp://svmlight.joachims.org/。
次のような形式のテキスト ファイルに変換したいデータ フレームがあります。
output featureIndex:featureValue ... featureIndex:featureValue
たとえば、次のようになります。
t = structure(list(feature1 = c(3.28, 6.88), feature2 = c(0.61, 1.83
), output = c("1", "-1")), .Names = c("feature1", "feature2",
"output"), row.names = c(NA, -2L), class = "data.frame")
t
# feature1 feature2 output
# 1 3.28 0.61 1
# 2 6.88 1.83 -1
次のようになります。
1 feature1:3.28 feature2:0.61
-1 feature1:6.88 feature2:1.83
これまでの私のコード:
nvars = 2
l = array("row", nrow(t))
for(i in(1:nrow(t)))
{
l = t$output[i]
for(n in (1:nvars))
{
thisFeatureString = paste(names(t)[n], t[[names(t)[n]]][i], sep=":")
l[i] = paste(l[i], thisFeatureString)
}
}
しかし、結果を完成させてテキスト ファイルに書き込む方法がわかりません。また、コードはおそらく効率的ではありません。
これを行うライブラリ関数はありますか?この種の出力形式は、たとえば Vowpal Wabbit では一般的なようです。