Establecer un nombre de variable dentro de un bucle forHola,
Me gusta establecer nombres de variables como nombre1, nombre2,... en un bucle for con el siguiente arreglo:
name1 = ntable;
name2 ="A"||"_"||Flow[1];
name3 ="A"||"_"||Flow[2];
y así.
Hice un script a continuación y obtuve un error:
name1 = ntable;
for (i=1, i<=Nitems, i++,
Eval(
Parse(
"name"||char(i+1) = "A" ||"_"|| Flow[i];
)
)
);
Aprecio tu ayuda. Gracias.
Re: Establecer un nombre de variable dentro de un ciclo forgracias jeff Probé su último script y cambié los archivos y listexcelsheet a nombres y funciona perfectamente. Gracias de nuevo por todo su apoyo.
Re: Establecer un nombre de variable dentro de un ciclo for¿Con qué estás luchando exactamente? ¿Estás recibiendo un error que no entiendes? He mostrado los bucles anteriores que funcionarán para usted.
Sugerí anteriormente que usara una lista en lugar de intentar crear nombres de variables JSL indexados. No veo nada en el código que publicaste aquí que sugiera que una lista no funcionará para ti. Le recomiendo encarecidamente que utilice listas en su lugar.
flow = {"one", "two", "three", "four", "five"};
names = {};
files = {};
For( i = 1, i <= N Items( flow ), i++,
names[i] = "A_" || flow( i );
files[i] = Open( "$Documents/JMP/A_" || Flow[i] || ".jmp" );
Create Excel Workbook( "$Documents/JMP/" || product_name || "_" || one_stage || ".xlsx", files, listexcelsheet );
);Re: Establecer un nombre de variable dentro de un ciclo forMuchas gracias Jeff. Necesito un poco más de ayuda después de que obtuve la primera parte. Aquí está el script que funciona bien a continuación:
If( Nitems == 5,
name1 = ntable;
name2 = "A" || "_" || Flow[1];
name3 = "A" || "_" || Flow[2];
name4 = "A" || "_" || Flow[3];
name5 = "A" || "_" || Flow[4];
name6 = "A" || "_" || Flow[5];
name1jmp = "$Documents/JMP/" || "A" || "_" || Flow[1] || ".jmp";
name2jmp = "$Documents/JMP/" || "A" || "_" || Flow[2] || ".jmp";
name3jmp = "$Documents/JMP/" || "A" || "_" || Flow[3] || ".jmp";
name4jmp = "$Documents/JMP/" || "A" || "_" || Flow[4] || ".jmp";
name5jmp = "$Documents/JMP/" || "A" || "_" || Flow[5] || ".jmp";
file1 = Open( ntablejmp );
file2 = Open( name1jmp );
file3 = Open( name2jmp );
file4 = Open( name3jmp );
file5 = Open( name4jmp );
file6 = Open( name5jmp );
listx = Eval List( {name1, name2, name3, name4, name5, name6} );
listexcelsheet = Eval List( {name1, name2, name3, name4, name5, name6} );
Create Excel Workbook( "$Documents/JMP/" || product_name || "_" || one_stage || ".xlsx", listx, listexcelsheet );
);
Estoy tratando de crear un bucle for para que funcione para cualquier Nitems. Estoy usando una máquina MAC y es por eso que se ha hecho de esta manera. Gracias por todo su apoyo continuo.
Re: Establecer un nombre de variable dentro de un ciclo forLa técnica es exactamente la misma. Está construyendo una cadena que va a analizar en una expresión y evaluarla.
Una cosa que podría confundirte es el \!" a continuación. Debido a que necesita que su cadena contenga un ", debe escapar usando \!.
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
expr_string = "name" || Char( i + 1 ) || "jmp = \!"$Documents/JMP/" || "A_" || Flow[i] || ".jmp\!"";
Show( expr_string );
Eval( Parse( expr_string ) );
);Re: Establecer un nombre de variable dentro de un ciclo forgracias jeff Ambos funcionan bien, pero me gusta el primero ya que mi código se basa en esa definición. En lugar de name1, también me gusta definir
nombre1jmp = "$Documentos/JMP/" || "A" || "_" || Flujo[i] || ".jmp" ;
¿Me pueden ayudar a agregar eso al script anterior? Gracias
Re: Establecer un nombre de variable dentro de un ciclo for@txnelson interpreta tu pregunta de manera diferente a como lo hago yo.
Creo que desea crear una serie de variables JSL con un número de índice como parte del nombre de la variable.
Puede hacerlo, pero deberá crear la expresión completa como una cadena antes de intentar analizarla().
Me gusta esto:
flow = {"two", "three", "four"};
name1 = "A_one";
For( i = 1, i <= N Items( flow ), i++,
Eval( Parse( "name" || Char( i + 1 ) || "= \!"A_" || flow[i] || "\!";" ) )
);
Sin embargo, no estoy seguro de por qué querría hacer esto en lugar de usar una lista o una matriz asociativa que tenga la indexación incorporada.
names = {};
names[1] = "A_one";
For( i = 1, i <= N Items( flow ), i++,
names[i + 1] = "A_" || flow[i]
);
Show( names[1], names[2], names[3], names[4] );
Re: Establecer un nombre de variable dentro de un ciclo forNo está utilizando la sintaxis correcta para cambiar el nombre de una columna.Aquí hay un ejemplo tomado directamente de
Ayuda==>Índice de secuencias de comandos==>Columna de secuencias de comandos
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
:Age << Set Name( "Time" );