如何使write.table保留dimnames?

如何使write.table保留dimnames?,r,R,我需要在一个CSV文件中保存多个表,并且很难看到如何保留维度名称。我搜索了这么多,找到的最近的是: 他对xtable的问题是我对write.table的问题——dimnames存在于表中(如果我使用它,也存在prop.table和ftable),但被write.table删除。我使用write.table而不是write.csv表示append=T 该数据集来自调查,目的是创建带有标记轴的完整交叉表集。在这种情况下,实际的行/列标签并不重要,只需要标注标签。我是新手,所以希望我没有错过一些明显的

我需要在一个CSV文件中保存多个表,并且很难看到如何保留维度名称。我搜索了这么多,找到的最近的是: 他对xtable的问题是我对write.table的问题——dimnames存在于表中(如果我使用它,也存在prop.table和ftable),但被write.table删除。我使用write.table而不是write.csv表示append=T

该数据集来自调查,目的是创建带有标记轴的完整交叉表集。在这种情况下,实际的行/列标签并不重要,只需要标注标签。我是新手,所以希望我没有错过一些明显的东西

d<-read.csv('dataset.csv')  # dataset with column headings, no row labels
cat('BEGIN\n',file='xtabs.csv')
for (i in 1:ncol(d)) {
    for (j in 1:ncol(d)) {
        cat(paste('\ni=',i,' j=',j,'\n'),file='xtabs.csv',append=T)
        t<-table(d[,i],d[,j],dnn=c(names(d[i]),names(d[j])))
        pt<-prop.table(t,1)
        write.table(pt,'xtabs.csv',sep=',',dec='.',row.names=F,col.names=F,append=T)
        print(pt)   # shows dimnames in the console as expected
    }
}
d试试这个:

tbl <- with(warpbreaks, table(wool, tension))
pt <- prop.table(tbl)
write.ftable(ftable(pt),file = "~/Desktop/table.csv", sep = ",",
             quote = FALSE)

tbl将您提供的参数用作false
col.names=TRUE,row.names=TRUE
…在开始搜索之前,您是否阅读了
?write.table
?我在?write.table和其他方面花了很长时间,并尝试了row.names和col.names的各种组合。我想要的不是行/列名,而是维度名,我指的是列标题。例如,在“Q5:age”与“Q8:height”的交叉表中,我希望标签“Q5:age”显示在行的旁边,“Q8:height”显示在列的上方。换句话说,轴标签。这是print(pt)显示的内容,但不是write.table(pt…)。可能是我刚出生时忽略的一些简单的东西,但到目前为止我已经搜索了不少。这不是
write.table
所做的。这可能会让人困惑,因为
write.table
实际上与
table
对象没有直接关系。更清楚的是,上面就是我发布时的代码。设置row.names=T,col.names=T不会产生所需的行为,但我本来应该说它会产生警告:“将列名追加到文件”。我会进一步调查的。+1回答不错,尤其是现在OP已经明确了想要什么。不知道
ftable()
。编辑试图使示例更接近OP最初的内容,并输出CSV。谢谢joran,这正是我想要的。不幸的是,write.ftable不支持sep参数,因此它不支持CSV,但我会找到一个解决方法。这个问题似乎不像我最初想象的那么简单。