0

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

方法一:Print.dataframe 水平布局中的向量。但是,标签显示为列名。

方法二: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 
4

2 回答 2

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
于 2016-08-12T18:24:45.007 回答
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 列数据。您看到的是行名,希望您在说“标签显示为列名”时不会误会。

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
于 2016-08-15T14:08:32.640 回答