2016-08-12 4 views
0

Ein Vektor mit mehreren Objekten soll auf der Konsole mit den Namen in einem vertikalen Tabellenformat gedruckt werden.Drucken Transponieren von Vektor oder Drucken Dataframe ohne Spaltennamen mit Standardpaketen R 3.3.1

Methode-1: Print.dataframe den Vektor in einem horizontalen Layout. Das Label wird jedoch als Spaltenname angezeigt.

Methode-2: Write.table. Aber der Text um die Zeilennamen gewickelt.

Bitte schlagen Sie vor, wenn eine andere Funktion verfügbar ist. Bitte überprüfen Sie ein minimales Beispiel zum besseren Verständnis.

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 

gewünschte Ausgabe ist:

Al   1 
BetaRay  2 
Gamma   3 
Zabracadabra 4 
+0

nicht wirklich sicher, was Sie wollen, aber versuchen 'unname (data.frame (sv))' –

Antwort

2

eine Option ist write.table zu verwenden. Wenn Sie jedoch Spalten ausrichten möchten, muss die Breite angepasst werden.

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

Danke für die schnelle Lösung. Dies erfordert, dass ein neues Paket gdata installiert wird. Sie schlagen vor, einen neuen Datenrahmen mit rownames auch als column zu erstellen. Das oben genannte Problem ist jedoch nur ein Beispiel. Das eigentliche Problem besteht darin, einen benannten Vektor in einem vertikalen Layout mit in fester Breite ausgerichteten Farben zu drucken. Bitte lassen Sie mich wissen, wenn Sie den wahren Fall benötigen. –

+0

Mit der von gdata vorgeschlagenen write.fwf habe ich den folgenden Code verwendet. main() { Bibliothek (gdata) df <-data.frame (Namen (sv), sv, row.names = NULL) Katze ("\ Nsample Variance jeder Beobachtung:") write.fwf (df, quote = FALSE, colnames = FALSE) } Bitte geben Sie an, ob dies prägnanter wäre und die Standardpakete in R verwenden könnten. –

0

Sie wissen nicht genau, was Sie hier erreichen wollen. Von Ihrer gewünschten Ausgabe verstehe ich, dass Sie versuchen, die Tabelle sauber auf die Konsole zu schreiben. Ihr Ansatz ist richtig unter Verwendung der Basis R.

Daten

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 

Hinweis: Sie haben ein 1 Spaltendaten mit 4 Reihen. Was Sie sehen, ist roownames, Ich hoffe, dass Sie sich dadurch nicht irren, wenn Sie sagen, dass das "Etikett als ein Spaltenname erscheint."

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. 

Hinweis: Der Text ist nicht in Zeilennamen verpackt, es erscheint nur so. write.table Hauptzweck ist das Schreiben eines Datenrahmens in eine Datei. Ich denke nicht, dass es empfohlen wird, Ihre Daten auf der Konsole zu drucken. Wenn Sie jedoch das Trennzeichen angeben, kann es eine Differenzierung anzeigen. Aber es ist kein effizienter Weg.

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| 

Datentabelle Weg (effizienter meiner Meinung nach, wenn Sie weiteren Prozess auf Ihrem Datenrahmen tun mögen) jedoch Datentabellenzeile Namen von numerischen Standardzeilennamen nicht erzeugt werden unterstützt. Sie müssen eine Spalte von rn erstellen, wenn Ihr Datenrahmen Zeilennamen hat. Aber es schreibt sauber auf die Konsole.

require(data.table) 

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

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