Ich habe das Gefühl, dass ich etwas auf die besonders harte Art und Weise gemacht habe, was eigentlich eine relativ unkomplizierte Aufgabe sein sollte.Ich frage mich, ob jemand sonst einen Rat für einen besseren Ansatz hat.

Ich versuche, eine benutzerdefinierte Tabelle wie die hier gezeigte zu erstellen, in der jeder Eintrag in der Spalte „Wert“ eine unterschiedliche Anzahl von Dezimalstellen haben kann.Im Beispiel unten sollte „N“ 0 Dezimalstellen haben, „Mean“/„SD“/„LCL (3SD)“/„UCL (3SD)“ sollte genau vier Dezimalstellen haben, „Pp“ sollte genau zwei Dezimalstellen haben Stellen usw. - einschließlich eventueller nachgestellter Nullen.Diese Werte stammen aus einer Datentabelle, in der die Werte in Spalten in der ersten Zeile mit dem Spalteneintrag „Stat“ als Spaltenüberschriften eingegeben werden.
Ursprünglich habe ich dies als Tabellenbox eingerichtet, mit einer eingebetteten String-Col-Box und einer Number-Col-Box:
nw = New Window( "nw", tb = Table Box(
scb = String Col Box( "Stat", {}),
ncb = Number Col Box( "Value", {}),
)
);
For( i = 1, i <= N Cols( dt), i++,
tb << Add Row( {Column( dt, i) << Get Name, Column( dt, i)[1] })
);Es scheint jedoch, dass das Feld „Zahlenspalte“ über eine eigene Einstellung für das Zahlenformat verfügt, die für alle Einträge in diesem Feld gilt.
Nach langem Ausprobieren habe ich festgestellt, dass die Verwendung von Char() oder Format() (mit Angabe von Format/Dezimalstellen) funktioniert, um die einzelnen Elemente im Voraus vom Zahlen- in das Zeichenformat zu konvertieren. z.B,
Column( dt, "Pp")[1] = Format( Round( Column( dt, "Pp")[1], 2), "Fixed Dec", 2);
Ersetzen Sie dann das Number Col Box durch ein zweites String Col Box und fügen Sie die konvertierten Werte als Strings hinzu, z. B.
nw = New Window( "nw", tb = Table Box(
scb1 = String Col Box( "Stat", {}),
scb2 = String Col Box( "Value", {}),
)
);
For( i = 1, i <= N Cols( dt), i++,
tb << Add Row( {Column( dt, i) << Get Name, Column( dt, i)[1] })
);Gibt es einen einfacheren Weg, den ich übersehe?
Beiseite:
- Heute habe ich erfahren, dass die Funktion Format() numerische Daten in Zeichendaten umwandelt.Ich dachte, das wäre nur eine Änderung des Formats numerischer Daten.
- Heute habe ich erfahren, dass man zu Char() Breiten- und Dezimalstellenattribute hinzufügen kann.Andernfalls werden nachgestellte Nullen abgeschnitten.