我有以下数据框(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程序能够读取它并区分不同的值。
答案 0 :(得分:3)
我看到@Seb已经链接(现已删除)到我的答案,这个答案在这个主题上松散。 (一般来说,数据框的列不应该是R中的列表。)但是,如果您的唯一目的是将此信息转储到文件中,那么这可能与您更相关:
一个简单的选项可能是将factLevels
列从列表转换为字符向量,方法是将值粘贴在一起(当然,使用逗号以外的分隔符)。也许是这样的事情:
info$factLevels <- sapply(info$factLevels,
FUN = paste,collapse = "-")
然后你必须调整你的java程序来正确地解析因子级别。