Was ist der beste Weg, um den Wert der neuen Tabellenvariablen innerhalb einer Funktion zu aktualisieren?Im Moment mache ich es wie folgt. Ich habe jedoch festgestellt, dass diese Tagesvariable nicht aktualisiert wird und Es wird eine neue Variable mit dem Namen „Tage 2“ erstellt.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Table Variable( "Days", 42 ); // In original data table, Days set to default which is 42
// assume below is a new function, and I'm passing dt as input and I want to update the Days variable
myFunction = Function ({dt},
// I want this Days variable get updated with new value below, 100
dt << New Table Variable ( "Days", 100);
dt << Select Where( :Name( "sex" ) == "F" );
dt << Subset( Copy formula( 1 ), Suppress formula evaluation( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) );
dt = Data Table (Current Data Table() << Get Name());
);
myFunction(dt)</CODE></PRE><P> </P></LINGO-BODY><LINGO-LABS id="lingo-labs-682883" slang="en-US" mode="NONE"><LINGO-LABEL>Automatisierung und Skripterstellung</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-682897" slang="en-US" mode="NONE">Betreff: So aktualisieren Sie den Wert einer neuen Tabellenvariablen in einer Funktion</LINGO-SUB><LINGO-BODY id="lingo-body-682897" slang="en-US" mode="NONE"><P>Skriptindex</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><img src="https://us.v-cdn.net/6038925/uploads/images/57148iA94A611B5705E00A/jthi_0-1696242700313.png" role="button" title="jthi_0-1696242700313.png" alt="jthi_0-1696242700313.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P>Verwenden Sie also << Tabellenvariable festlegen, anstatt eine neue zu erstellen</P></LINGO-BODY><LINGO-SUB id="lingo-sub-683259" slang="en-US" mode="NONE">Betreff: So aktualisieren Sie den Wert einer neuen Tabellenvariablen in einer Funktion</LINGO-SUB><LINGO-BODY id="lingo-body-683259" slang="en-US" mode="NONE"><P>Hallo,</P><P> </P><P>Vielen Dank für diesen Vorschlag, und ich denke, er funktioniert.Darüber hinaus habe ich noch eine zusätzliche Frage zu dieser Variablenaktualisierung. Wissen Sie, wie JSL die Datentabellenvariable basierend auf einer neuen Variablen aktualisieren kann, die wir außerhalb der Funktion deklariert haben? Ich habe den Code wie folgt geändert und denke, dass er nicht funktioniert. Ich möchte, dass die Set Table Variable Werte aus den Variablen a und b laden kann.</P><P> </P><PRE><CODE class=" language-jsl">Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Table Variable( "Days", 42 ); // In original data table, Days set to default which is 42
// declare new variable, this will be input from user
a = 100;
b = 200;
// assume below is a new function, and I'm passing dt and a as input
myFunction1 = Function ({dt, a},
// I want this Days variable get updated with new value based on a
dt << Set Table Variable ( "Days", :a);
dt << Select Where( :Name( "sex" ) == "F" );
dt << Subset( Copy formula( 1 ), Suppress formula evaluation( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) );
dt = Data Table (Current Data Table() << Get Name());
);
// assume below is a new function, and I'm passing dt and b as input
myFunction2 = Function ({dt, b},
// I want this Days variable get updated with new value based on b
dt << Set Table Variable ( "Days", :b);
dt << Select Where( :Name( "sex" ) == "M" );
dt << Subset( Copy formula( 1 ), Suppress formula evaluation( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) );
dt = Data Table (Current Data Table() << Get Name());
);
myFunction1(dt);
myFunction2(dt);
Mit einer Tabellenvariablen, wenn Sie sie nicht verwenden
dt << Set Table Variable
Sie müssen die Variable zuerst löschen und dann erneut erstellen.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Table Variable( "Days", 42 ); // In original data table, Days set to default which is 42
// assume below is a new function, and I'm passing dt as input and I want to update the Days variable
myFunction = Function ({dt},
// I want this Days variable get updated with new value below, 100
dt << Delete Table Variable ( "Days");
dt << New Table Variable ( "Days", 100);
dt << Select Where( :Name( "sex" ) == "F" );
dt << Subset( Copy formula( 1 ), Suppress formula evaluation( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) );
dt = Data Table (Current Data Table() << Get Name());
);
Oh, diesen Teil habe ich verpasst. Habe es.
Jetzt funktioniert es wie erwartet.Danke, Jim.