問題
這個問題應該很常見吧。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