使用默认包R 3.3.1打印不带列名的Vector或Print Dataframe的转置

时间:2016-08-12 17:48:39

标签: r output write.table

具有多个对象的矢量将在控制台上打印,名称采用垂直表格格式。

方法-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 

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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, 当你说&#34;我希望你没有被这个弄错。标签显示为列名。&#34;

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|

数据表方式(如果您希望对数据帧进行任何进一步处理,我认为更有效)但是,数据表不支持行名称,默认情况下会生成数字行名称。如果您的数据框具有行名,则必须创建rn列。但是,它干净利落地写入控制台。

require(data.table) 

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

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