lapply(names(df),function(x){ tb <- table(df[[x]]);
write.table(file="test.csv", append=TRUE, quote=FALSE,
row.names=FALSE, col.names=FALSE, sep=";",
x= paste(x, paste( names(tb), tb, collapse=";", sep=";") ,
sep=";")
)})
#--------
fruit;Apple;2;Pear;1
veg;Carrot;1;Peas;1;Potato;1
meat;Chicken;1;Duck;1;Steak;1
您还将看到不会发送到文本文件的三个 NULL 列表。将表格和矩阵写入文件并不是 R 的强项write.matrix
。package::MASS 中有一个函数。我最初的努力writeLines
失败了,因为它没有“附加”选项,而且我无法拼凑一个可以执行append
.
(R 中的另一个问题是使用 'apply/lapply/sapply' 处理列表(并通过继承数据帧)不会将names
列表元素(和colnames
数据帧)的 传递给函数,因此“写入”函数内部没有用于写入文件的名称。这就是为什么我使用names(df)
而不是仅使用df
.
进一步说明,可能有 JSON 编写函数,它们可能更可靠。我会看看并报告回来。
有 RJSONIO 包:
> require(RJSONIO)
Loading required package: RJSONIO
> toJSON(df)
[1] "{\n \"fruit\": [ \"Apple\", \"Apple\", \"Pear\" ],\n\"veg\": [ \"Carrot\", \"Potato\", \"Peas\" ],\n\"meat\": [ \"Steak\", \"Chicken\", \"Duck\" ] \n}"