2011-12-20 26 views
2

我有看起來像這樣以下的數據幀(信息):R:與清單的輸出數據幀到csv

> 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已鏈接(現已刪除),以我的答案是鬆散的關於這一主題。 (一般來說,數據幀的列不應該在河列表)。但是,如果你唯一的目的就是這個信息轉儲到一個文件中,也許這將是更適合您:

一個簡單的選擇可能是到通過粘貼值一起列factLevels從列表轉換爲字符向量(當然使用逗號以外的分隔符,)。也許是這樣的:

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

然後,你將不得不調整你的java程序,以正確解析因子水平,當然。

+0

這應該工作。我確實刪除了'as.character'調用,因爲它將列表放入一個字符串中。沒有它,粘貼功能現在可以正常工作。謝謝。 – bnjmn

+0

@Benjamin謝謝指正! – joran