2017-02-07 7 views
0

私はデータフレームを持っています。変数の多くは、このような名前を持っている:R変数名にセミコロンが含まれています

/messages/with/:userid/ 
/:id/ 

私が使用してデータを読み込む:元の名前は(check.names = Fを使用して)保持したように、

read.csv(file="file-path", header=TRUE, 
      sep=",", check.names = F) 

を。 私はデータから決定木モデルを訓練するためにRPARTを使用して、使用して形式PMMLにツリーモデルを保存しよう:

saveXML(pmml(dt.model, model.name = "DecisionTree_Model", 
     app.name = "model_lr.pmml", 
     description = "Decision Tree Model", 
     unknownValue=0), "dt_model.pmml") 

はしかし、これは次のエラーにつながる:

Error in field$class[[field$name[i]]] : subscript out of bounds

私は、変数名には:が含まれているため、列の索引付けがうまくできていないと考えられます。

変数名は次のようになりますように、私は、check.names = Tでデータを読み取ることができた。しかし

X.messages.with..userid. 
X..id." 

私は私がしたい、PMMLファイルの元の変数名が必要になりますから、変数名をそのまま保持してください。この問題を解決する方法はありますか?

答えて

0

pmmlパッケージは内部がかなり揺れています。結局のところ、RでXML操作を行うのはあまり良い考えではありません。 RモデルからPMMLデータ形式へのエクスポートに興味がある場合は、r2pmml packageを試してみてください。これはJavaで書かれているため(これはR言語の癖に悩まされません)、はるかに高速で機能的です。

r2pmmlパッケージの問題は、まだモデルタイプrpart::rpartをサポートしていないことです。したがって、最良のオプションは次のようになります。

  1. 名前の変更data.frame列。変数名マッピングのリストをテキストファイルに保存します。
  2. パッケージを使用してrpartモデルをPMMLファイルにエクスポートします。
  3. JPMML-Model libraryを使用してPMMLファイルを開き、元の変数名(上記のマッピングファイルに基づいて)を復元します。 JPMML-Modelでは、特別なAPI(Visitorクラスorg.jpmml.model.visitors.FieldRenamer)が提供されています。
関連する問題