2016-08-12 39 views
0

將具有多個對象的矢量打印在垂直表格格式的控制檯上。打印使用默認軟件包打印矢量或打印數據幀不帶列名R 3.3.1

方法-1:Print.dataframe水平佈局中的矢量。但是,該標籤顯示爲列名稱。

方法-2:Write.table。但文本包裝到行名稱。

請提出是否有其他功能可用。請查看下面的一個簡單例子以獲得更好的理解

sv<-(1:4) 
names(sv)<-c("Al", "BetaRay", "Gamma", "Zabracadabra") 
sv 
      Al  BetaRay  Gamma Zabracadabra 
      1   2   3   4 
print(data.frame(sv)) 
      sv 
Al   1 
BetaRay  2 
Gamma   3 
Zabracadabra 4 

write.table(data.frame(sv), col.names = FALSE, quote = FALSE) 
Al 1 
BetaRay 2 
Gamma 3 
Zabracadabra 4 

所需的輸出是:

Al   1 
BetaRay  2 
Gamma   3 
Zabracadabra 4 
+0

不是很確定你想要什麼,但嘗試'unname(data.frame(sv))' –

回答

2

一個選擇是使用write.table。但是,如果您需要對齊列,則需要調整寬度。

library(gdata) 
    df <- data.frame(c("Al", "BetaRay", "Gamma", "Zabracadabra"),c(1:4)) 
    write.fwf(df,quote=F,colnames = F) 

    Al   1 
    BetaRay  2 
    Gamma  3 
    Zabracadabra 4 
+0

感謝您的快速解決方案。這需要安裝新的軟件包gdata。另外,你建議用rownames創建一個新的數據框架作爲顏色。但是,上面提到的問題僅僅是一個例子。真正的問題是在彩色對齊固定寬度的垂直佈局中打印指定的矢量。請讓我知道你是否需要真實的案例。 –

+0

使用從gdata建議的write.fwf,我使用了下面的代碼。 主() { 庫(GDATA) DF <-data.frame(名字(SV),SV,row.names = NULL) 貓( 「中的每個觀測\方差NSample個:」) write.fwf( df,quote = FALSE,colnames = FALSE) } 請建議如果這可能更簡潔並在R中使用默認包。 –

0

你不完全清楚你在這裏想達到什麼。從你想要的輸出中,我知道你正試圖把表格寫入控制檯乾淨。你的做法是正確使用基本R.

數據

sv<-(1:4) 
names(sv)<-c("Al", "BetaRay", "Gamma", "Zabracadabra") 

# Method-1: Print.dataframe the vector in a horizontal layout. 
# However, the label appears as a column name. 

sv<-unname(data.frame(sv)) # as suggested by @DirtySockSniffer 

dim(sv) 
[1] 4 1 

注意:你有4行的1列數據。你看到的是rownames, 當你說「標籤顯示爲列名稱」時,我希望你不要誤會。

print(sv) # is exactly doing what you need 

Al   1 
BetaRay  2 
Gamma  3 
Zabracadabra 4 


# Method-2: Write.table. But the text wrapped to the row names. 

注意:文本沒有包裝到行名稱中,它只是顯示如此。 write.table的主要用途是將數據框寫入文件。我不認爲建議您將數據打印到控制檯。但是,當您指定分隔符時,它可以顯示一些區別。但是,這不是一個有效的方法。

write.table(sv, col.names = FALSE, quote = FALSE, sep = "\t") # use a tab separator 

    Al 1 
BetaRay 2 
Gamma 3 
Zabracadabra 4 

# Other options require you to use some package to print cleanly to console. 
# install.packages("knitr") 
require(knitr) 
kable(sv) 

|    | sv| 
|:------------|--:| 
|Al   | 1| 
|BetaRay  | 2| 
|Gamma  | 3| 
|Zabracadabra | 4| 

DataTable的方式(更有效地在我看來,如果你希望做你的數據幀的任何進一步的處理)。但是,數據表不支持默認數值行名行名字中產生。如果您的數據框中有行名稱,您將被迫創建一列rn。但是,它會乾淨地寫入控制檯。

require(data.table) 

data.table(sv,keep.rownames = T) 

      rn sv 
1:   Al 1 
2:  BetaRay 2 
3:  Gamma 3 
4: Zabracadabra 4