包含多个对象的向量将打印在控制台上,并以垂直表格格式显示名称。
方法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
一种选择是使用 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
您并不完全清楚自己想要在这里实现什么目标。从您想要的输出中,我了解到您正在尝试将表格干净地写入控制台。使用基本 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
sv <- data.frame(Al=c(1),BetaRay=c(2),Gamma=c(3),Zabracadabra=c(4))
这会打印 svsv
这会打印 sv 的转置t(sv)
这会打印 sv 的转置,不带列标题unname(as.data.frame(t(sv)))