2016-08-12 2 views
0

複数のオブジェクトを持つベクトルは、名前が垂直表形式でコンソールに印刷されます。デフォルトのパッケージを含む列名のないベクトルまたは印刷データフレームの印刷R 3.3.1

方法1:ベクトルを水平レイアウトで印刷します。ただし、ラベルは列名として表示されます。

方法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をcoloumnとして新しいデータフレームを作成することをお勧めします。しかし、上記の問題は単なる例である。実際の問題は、固定幅で配列された列を使って、名前付きベクトルを垂直レイアウトで印刷することです。真のケースが必要な場合は、私に知らせてください。 –

+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 
関連する問題