2016-05-16 7 views
0

folgenden R-Befehl vor:Warum erstellt substitute() Zeilenumbrüche, wenn keine Argumente im Argument vorhanden sind?

> substitute(c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)) 

c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
    1) 

Warum über Linien, die die Ausgabe Pause tat? Habe nichts in help("substitute") über jede Art von Größe oder Breite Cutoff gesehen.

Danke für jede Einsicht.

+1

Nur damit Sie wissen, ist die Art und Weise etwas angezeigt auf der Konsole wird mit 'substitute' absolut nichts zu tun haben. Was Sie sehen, ist das Ergebnis eines Aufrufs von 'print', wahrscheinlich' print.default'. Ich sehe nichts Offensichtliches, also passiert es wahrscheinlich intern im C-Code der Druckmethode. – joran

+0

Seltsam genug, auch wenn Sie die Breite des Konsolenfensters verkleinern, fügt es eine zusätzliche Pause vor der letzten "1" ein, egal was passiert. –

+3

Ah, da ist es in '? Print.default'. Versuchen Sie, Optionen (deparse.cutoff = 200) oder eine so große Zahl zu setzen. Insbesondere lautet die Zeile aus der Dokumentation: 'option deparse.cutoff steuert das Drucken von Sprachobjekten wie z. B. Anrufen und Formeln. ' – joran

Antwort

2

Das hat eigentlich nichts mit substitute zu tun. Die Funktion substitute gibt einfach ein Objekt der Klasse "call" zurück. Die Standardmethode print() wird dann verwendet, um diesen "Anruf" an die Konsole zu "zeichnen". Die Funktion formatiert den Code so, dass er "hübsch aussieht". In diesem Fall wird sichergestellt, dass die Textzeilen einer Abschrift von etwa 60 Zeichen entsprechen.

Sie können die Cutoff-Standard ändern, um eine option()

options("deparse.cutoff"=120) 

nun durch Setzen, wenn Sie es noch einmal versuchen, erhalten Sie die volle Linie

substitute(c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)) 
# c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) 
Verwandte Themen