R:将列表输出到csv的输出数据帧

时间:2011-12-20 18:45:51

标签: r csv

我有以下数据框(info),如下所示:

    > 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程序能够读取它并区分不同的值。

1 个答案:

答案 0 :(得分:3)

我看到@Seb已经链接(现已删除)到我的答案,这个答案在这个主题上松散。 (一般来说,数据框的列不应该是R中的列表。)但是,如果您的唯一目的是将此信息转储到文件中,那么这可能与您更相关:

一个简单的选项可能是将factLevels列从列表转换为字符向量,方法是将值粘贴在一起(当然,使用逗号以外的分隔符)。也许是这样的事情:

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

然后你必须调整你的java程序来正确地解析因子级别。