使用默认包 R 3.3.1 打印向量转置或打印不带列名称的数据框

问题描述 投票:0回答:3

包含多个对象的向量将打印在控制台上,并以垂直表格格式显示名称。

方法1:以水平布局打印向量的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 
r output write.table
3个回答
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
投票

您并不完全清楚自己想要在这里实现什么目标。从您想要的输出中,我了解到您正在尝试将表格干净地写入控制台。使用基本 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

注意:您有 1 列 4 行数据。你看到的是行名, 我希望当您说“标签显示为列名称”时,您不会误解这一点。

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

0
投票

使用 data.frame() 时,您可以命名,并按列输入数据。

因此,下面的每个 c() 都包含数据框中

的数据。

这将创建名为 sv 的数据框

sv <- data.frame(Al=c(1),BetaRay=c(2),Gamma=c(3),Zabracadabra=c(4))
这会打印 sv

sv
这会打印 sv 的转置

t(sv)
这会打印 sv 的转置,不带列标题

unname(as.data.frame(t(sv)))
    
© www.soinside.com 2019 - 2024. All rights reserved.