Bucle para abrir archivos, cambiar el nombre de una columna y guardar en el formato originalHola a todos,
Intenté armar un script para abrir una serie de archivos (.dx) y cambiar el texto de una de las columnas de cada archivo. Me las arreglo para que funcione para uno o dos archivos individualmente, pero si intento un conjunto de cuatro, comienza un bucle infinito. ¿Alguien puede ayudarme? Existe la posibilidad de que el problema esté en los archivos, pero me gustaría examinar primero el script ya que soy un novato en jsl. Idealmente, me gustaría guardar los archivos no como jmp sino también como dx.
Files = Pick File( "Select File(s)", "G:\Retention Compliant\Research\Analytical\Projects\IR database", {"All Files|*"}, 1, 0, "", "multiple" );
For( i = 1, i <= N Items( Files ), i++,
Try( dt = Open( Files[i], "text" ) );
wait( 0 );
For( n = 1, n <= N Items (Files), n++,
colList = dt << get column names( character, string );
For( i = 1, i <= N Items( colList ), i++,
selRows = dt << get rows where(
Column( dt, colList[i] )[Row()] == "##YUNITS= % Transmittance" | Column( dt, colList[i] )[Row()] == "##YUNITS= % T"
);
If( N Rows( selRows ) > 0,
Column( dt, colList[i] )[selRows] = "##YUNITS= % T";
);
);
) );ScriptingRe: Loop para abrir archivos, cambiar el nombre de una columna y guardar en el formato original1) Vuelva a formatear su JSL usando el editor emergente con el botón derecho. Podrás ver mejor el anidamiento.
2) está reutilizando la variable i en el bucle interno. Eso está causando el bucle.
3) elimine el contenedor try (), o haga que haga algo cuando detecte un error.
Re: Loop para abrir archivos, cambiar el nombre de una columna y guardar en el formato originalGracias Craige, ¡ahora funciona con todos los archivos y sin errores! ¿Alguna idea de cómo guardar en el formato original (.dx) y preferiblemente preservar el nombre del archivo?
Re: Loop para abrir archivos, cambiar el nombre de una columna y guardar en el formato originalNo estoy seguro de qué es dx, pero puede guardar con la extensión .csv y probablemente estar cerca.
Re: bucle para abrir archivos, cambiar el nombre de una columna y guardar en el formato originalHe anotado el siguiente script con los problemas que encontré. Me sorprende que pueda leer en un archivo .dx. JMP ciertamente no admite la escritura de archivos .dx (que yo sepa).
Files = Pick File(
"Select File(s)",
"G:\Retention Compliant\Research\Analytical\Projects\IR database",
{"All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
// Open one file
Try( dt = Open( Files[i], "text" ) );
Wait( 0 );
// Loop from 1 to the number of files (even though only 1 file has been opened)
For( n = 1, n <= N Items( Files ), n++,
// Here you will be reading the column names in for the first file over and over
colList = dt << get column names( character, string );
// Loop using "i" as the index across all of the columns....in the first file
// since that is all we have read in.....but since you are using "i", you will
// be creating an infinate loop, since you are using "i" for the first loop
// and you will be interferring with the assumed stepping for the outter loop
For( i = 1, i <= N Items( colList ), i++,
selRows = dt << get rows where(
// You are not in a formula, so the Row() function will not provide a predictable result
Column( dt, colList[i] )[Row()] == "##YUNITS= % Transmittance" | Column( dt, colList[i] )[Row()] ==
"##YUNITS= % T"
);
If( N Rows( selRows ) > 0,
Column( dt, colList[i] )[selRows] = "##YUNITS= % T"
);
);
);
);