美文网首页
【R】write.table输出数据带有行名?

【R】write.table输出数据带有行名?

作者: 生物信息与育种 | 来源:发表于2021-04-18 18:10 被阅读0次

    问题

    这个问题应该很常见吧。R中输出数据框时,想要把行名和列名都输出。如果直接输出的话,输出的结果列名会往前移动一位,这显然不是我们想要的。
    直接上例子:

    > a = matrix(1:9, nrow = 3, ncol = 3, dimnames = list(LETTERS[1:3], LETTERS[1:3]))
    > a
      A B C
    A 1 4 7
    B 2 5 8
    C 3 6 9
    

    直接保存:

    write.table(a,"a.txt",row.names=T,col.names=T)
    

    结果是这样的:

    "A" "B" "C"
    "A" 1 4 7
    "B" 2 5 8
    "C" 3 6 9
    

    解决一

    出现这个问题是,行名变成列,R不知如何设置列名,但这种列名移位的行为很流氓。

    如果不在意行名的名称,那么很简单:

    write.table(a,"a.txt",col.names=NA)
    

    结果:

    "" "A" "B" "C"
    "A" 1 4 7
    "B" 2 5 8
    "C" 3 6 9
    

    解决二

    如果想要首位有列名的话,那就只能多写点代码了。

    write.table(data.frame(ID=rownames(a),a),"a.txt", row.names=F)
    

    结果:

    "ID" "A" "B" "C"
    "A" 1 4 7
    "B" 2 5 8
    "C" 3 6 9
    

    https://stackoverflow.com/questions/2478352/write-table-writes-unwanted-leading-empty-column-to-header-when-has-rownames

    相关文章

      网友评论

          本文标题:【R】write.table输出数据带有行名?

          本文链接:https://www.haomeiwen.com/subject/wtevlltx.html