2011-12-20 10 views
2

をCSV形式に私はこのようになり、次のデータフレーム(情報)を持つ:クラスタイプとR:リストを出力データフレーム

> info[1:5,] 
        field BinningMethod DataType numLevels cumLevel           factLevels 
    1   data_len  EQUAL AREA DOUBLE   5  5 (-inf,2.0], (2.0,6.0), [6.0,8.0), [8.0,+inf), MISSING 
    2 dns_count_add_rr DISCRETE MAPPING DOUBLE   3  8          0.0, 1.0, MISSING 
    3 dns_count_answers DISCRETE MAPPING DOUBLE   3  11          0.0, 1.0, MISSING 
    4 dns_count_auth_rr DISCRETE MAPPING DOUBLE   3  14          0.0, 1.0, MISSING 
    5 dns_count_queries DISCRETE MAPPING DOUBLE   2  16           1.0, MISSING 

> sapply(info, class) 
    field BinningMethod  DataType  numLevels  cumLevel factLevels 
    "character" "character" "character"  "numeric"  "numeric"  "list" 

を私は出力したいのですが'info'をCSVファイルに追加できますが、リストフィールド(factLevels)の処理方法はわかりません。現在、次のエラーが表示されます:

> write.csv(info, 
+ file = paste("FIELDS_", modelFile, sep=""), 
+ row.names = FALSE, na = "") 
Error in write.table(x, file, nrow(x), p, rnames, sep, eol, na, dec, as.integer(quote), : unimplemented type 'list' in 'EncodeElement' 

どうすればよいですか?私が持っている唯一の要件は、Javaプログラムがそれを読み込み、異なる値を区別できるようにすることです。

答えて

3

@Sebは、このトピックについてのゆるやかな回答にリンクしています(今削除されています)。 (一般に、データフレームの列はRのリストではありません)。ただし、この情報をファイルにダンプするのが唯一の目的の場合は、おそらくより適切です。

値を貼り付けることでリストから文字ベクトルにfactLevels列を変換します(もちろんカンマ以外の区切り文字を使用します)。おそらく次のようなものがあります:

info$factLevels <- sapply(info$factLevels, 
          FUN = paste,collapse = "-") 

次に、適切に因子レベルを解析するようにJavaプログラムを調整する必要があります。

+0

これは動作するはずです。私はそれがリストを1つの文字列に置くように 'as.character'呼び出しを削除しました。これがなければ、ペースト機能が正しく機能するようになりました。ありがとう。 – bnjmn

+0

@ベンジャミン私を訂正してくれてありがとう! – joran

関連する問題