Quelle est la meilleure façon de mettre à jour la valeur de la nouvelle variable de table dans une fonction.En ce moment, je le fais comme ci-dessous. Cependant, j'ai constaté que cette variable Days ne serait pas mise à jour et cela créera une nouvelle variable appelée Jours 2.
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>Automatisation et scripts</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-682897" slang="en-US" mode="NONE">Re : Comment mettre à jour la valeur d'une nouvelle variable de table dans la fonction</LINGO-SUB><LINGO-BODY id="lingo-body-682897" slang="en-US" mode="NONE"><P>Index des scripts</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>utilisez donc << Set Table Variable au lieu d'en créer une nouvelle</P></LINGO-BODY><LINGO-SUB id="lingo-sub-683259" slang="en-US" mode="NONE">Re : Comment mettre à jour la valeur d'une nouvelle variable de table dans la fonction</LINGO-SUB><LINGO-BODY id="lingo-body-683259" slang="en-US" mode="NONE"><P>Salut,</P><P> </P><P>Merci pour cette suggestion, et je pense que cela fonctionne.En plus de cela, j'ai une question supplémentaire sur cette mise à jour de variable. Savez-vous comment JSL peut mettre à jour la variable de la table de données en fonction de la nouvelle variable que nous avons déclarée en dehors de la fonction ? J'ai modifié le code comme ci-dessous et je pense qu'il ne fonctionne pas. Je veux que la variable Set Table puisse charger les valeurs des variables a et b.</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);
Avec une variable de table, si vous n'utilisez pas
dt << Set Table Variable
vous devrez d'abord supprimer la variable, puis la créer à nouveau.
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, j'ai raté cette partie. J'ai compris.
Maintenant, cela fonctionne comme prévu.Merci Jim.