2016-08-12 38 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