crear un bucleQuiero agregar una columna con los números de fila a varias tablas de datos usando el siguiente script:
dt<<NEW column=""></NEW>
Todavía soy nuevo en scripting. ¿Cómo puedo procesar todas mis tablas de datos automáticamente? Tengo esta línea de información que podría funcionar, pero parece que hay un problema para ubicar la "Tabla de datos"...
Names Default To Here( 1 );
// Create a list of data tables to be updated
dtList = {"Table1", "Table2", etc...};
// Loop through each of the data tables and add the column
For( i = 1, i <= N Items( dtList ), i++,
dt = Data Table( dtList[i] );
Re: crear un bucleMuchas gracias Jeff. Eso es perfecto.
Absolutamente debo encontrar el tiempo para echar un vistazo más de cerca a la lectura de la guía de secuencias de comandos. Me va a ayudar.Re: crear un bucleTienes varios problemas.
te has confundido ruta de acceso y todos los archivos y los usó incorrectamente en su código. El resultado de Seleccionar directorio () , ruta de acceso , será una cadena que es la ruta al directorio que elija el usuario. Ha intentado usarlo en la indexación de su bucle For() a continuación como si tuviera la lista de archivos.
El resultado de Archivos en Directorio() , todos los archivos , será la lista de archivos en el directorio. Eso es lo que deberías estar dando vueltas.
tendrás que Abierto() las tablas de datos antes de poder agregar la nueva columna.
Desde el todos los archivos la lista es solo los nombres de archivo, deberá concatenar el directorio, ruta de acceso , en el argumento de Open().
Finalmente, debe asegurarse de que solo está intentando abrir tablas de datos JMP comprobando la extensión de los archivos. En el código de ejemplo a continuación, lo hago con el Palabra() función. El argumento -1 pide la última palabra de la cadena.
dirpath = Pick Directory();
allfiles = Files In Directory( dirpath );
// Loop through each of the files and add the column
Show( allfiles );
For( i = 1, i <= N Items( allfiles ), i++,
If( Word( -1, allfiles[i], "." ) == "jmp",
dt = Open( dirpath || allfiles[i] );
dt << New Column( "Sequence", numeric, formula( Row() ) );
)
);
Revisar la Empezar sección de la Tablas de datos capitulo de la Guía de secuencias de comandos para obtener una introducción al trabajo con tablas de datos.
Re: crear un bucleCometí un error en mi mensaje al copiar el script pero trabajé con la versión correcta y todavía tengo un mensaje de error con la opción Depurar:
Inesperado "Para". Quizás falta un ; o .
Re: crear un bucleTienes "dispath" en tu bucle.Cámbialo a "dirpath"
Re: crear un bucleAparentemente. Todavía no está bien. ¿Hay algún problema con la línea "Para"?
<SPAN class="token comment">dirpath = Pick Directory();<BR />allfiles = Files in Directory (dirpath);<BR />all files<BR /><BR />// Loop through each of the files and add the column</SPAN>
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN> i <SPAN class="token operator">=</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> i <SPAN class="token operator"><=</SPAN> <SPAN class="token function">N Items</SPAN><SPAN class="token punctuation">(</SPAN> dirpath <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> i<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
dt <SPAN class="token operator">=</SPAN> <SPAN class="token function">Data Table</SPAN><SPAN class="token punctuation">(</SPAN> dispath<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
dt<SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token function">new column</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token string">"Sequence"</SPAN><SPAN class="token punctuation">,</SPAN> numeric<SPAN class="token punctuation">,</SPAN> formula<SPAN class="token punctuation">(</SPAN><SPAN class="token function">Row</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Re: crear un bucleHay comandos para elegir un directorio y listar todos los archivos en ese directorio.
Recomendaría verificar cada archivo si es un archivo JMP (por ejemplo, verificando el final del archivo).
dirpath = Pick Directory();
allfiles = Files in Directory(dirpath);
allfiles
Re: crear un bucle¡Ya! funciona bien !
¿Es posible solicitar, al inicio del script, la apertura de todas las tablas de datos que se encuentran en una carpeta para ejecutar el script a partir de entonces? ¿Se debe indicar el título de cada archivo uno tras otro en las "listas de tablas"? Eso lleva mucho tiempo... ¿cómo me aconsejan que proceda?
gracias de antemano
Re: crear un bucleEl siguiente script funciona para mí. Si no es así para usted, sería útil publicar el contenido de su registro (Menú principal => Ventana => Registro) y la versión de JMP que está utilizando.
listoftables = {"Untitled 5", "Untitled 4", "Untitled 3"};
// Loop through each of the data tables and add the column
For( i = 1, i <= N Items( listoftables ), i++,
dt = Data Table( listoftables[i] );
dt<<NEW column=""></NEW>