Crear columnas en un bucle<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Entonces, en mi secuencia de comandos, tengo un ciclo que crea columnas, funciona muy bien, pero quiero mejorarlo un poco. Tengo datos que vienen en la forma (número)|(carácter)|(número)|(carácter), etc. Así que tengo tipos de datos alternos y me gustaría imprimirlos en su forma normal. En este momento, las columnas están en forma numérica, por lo que no puedo ver ninguno de los datos de los caracteres. Pero si lo cambio a formato de caracteres, pierdo la estructura de datos numéricos. Así que tengo este bucle:
For(j = 1, j <= nitems(pinList), j++,
dt2 << Nueva columna (pinList, Numérico, Continuo, Formato("Mejor",12));
dt2 << Nueva Columna(pinList[j++], Carácter, Nominal);
);
Donde defino todos los nombres de columna en mi matriz pinList. Eso funciona, excepto por el hecho de que duplica la entrada en pinList(que en este caso, en realidad no es algo malo). el verdadero problema surge cuando trato de ejecutar otro ciclo después que analiza los datos que están delimitados por un '|' y ponerlo en las nuevas columnas.
Para (i = 1, i <= nrows(dt2), i++,
one_test_result_list = palabras(columna(dt2,"Test_Result") , "|");
Para (k = 1, k <= nitems(one_test_result_list), k++,
Columna (dt2, pinList) = una_lista_de_resultados_de_prueba;
);
);
La última línea se ejecuta una vez y luego se interrumpe porque la siguiente entrada en pinListtiene un "2" después porque cuando se crearon las columnas, duplicó todos los nombres. No estoy seguro de cómo hacer que esto funcione. Puedo definir todos los nombres que quiero en la matriz pinList, pero quiero alternar los tipos de columnas numéricas y de caracteres.
¡Cualquier ayuda es muy apreciada! ¡¡Gracias!!
Re: Creando Columnas en un BucleProbé una variación de eso, pero puse j ++ antes de la segunda línea de columna nueva. También usé la declaración if para recorrer mi lista de datos analizados. Así que los combiné así:
Para ( j = 1 , j <= N elementos ( pinLista ) , j ++,
dt2 << Nueva columna ( pinLista [ j ] , Numérico , Continuo , Formato ( "Mejor" , 12 ) ) ;
dt2 << Nueva columna ( pinLista [ j + 1 ] , Personaje , Nominal ) ; // Crear columna para j+1.
j ++; // Luego iterar por j=j+1.
) ;
Para ( i = 1 , i <= n filas ( dt2 ) , i ++,
one_test_result_list = Palabras ( Columna ( dt2 , "Resultado de la prueba" ) [ i ], "|" ) ;
Para ( j = 1 , j <= N elementos ( resultado_de_una_prueba ) , j ++,
Si ( Módulo ( j , 2 ) == 1 ,
Columna ( dt2, lista de pines [ k ] ) [ i ] = número ( una_lista_de_resultados_de_prueba [ k ]) ; // Ejecutar para j impar
Columna ( dt2, lista de pines [ k ] ) [ i ] = una_lista_de_resultados_de_prueba [ k ] ; // Ejecutar para incluso j
);
);
) ;
Esto funciona perfectamente. Por lo tanto, se asegura de que los resultados numéricos se impriman como números y los caracteres estén en su formato normal. ¡¡Muchas gracias por tu ayuda!!
Re: Creando Columnas en un BucleHola sophiaw,
Si entiendo su secuencia de comandos correctamente, creo que el problema surge por el uso de j ++ dentro del cuerpo de su ciclo, porque j ++ solo iterará j después de que el ciclo haya completado una iteración.Puedo pensar en un par de maneras de evitar esto.Un método es reemplazar j++ con j+1 y luego agregar una línea separada para j++.El otro método es agregar una instrucción If() para crear comandos separados para j pares e impares.
Consulte los Ejemplos 1 y 2 para ver un ejemplo de cómo funciona i++ dentro del cuerpo de un ciclo.
Espero que esto ayude.
Nombres predeterminados hasta aquí ( 1 ) ;
dt2 = Nueva tabla ( "dt2" , Agregar filas ( 20 ) ) ;
pinLista = { "A" , "B" , "C" , "D" , "MI" , "F" } ;
Para ( j = 1 , j <= N elementos ( pinLista ) , j ++,
dt2 << Nueva columna ( pinLista [ j ] , Numérico , Continuo , Formato ( "Mejor" , 12 ) ) ;
dt2 << Nueva columna ( pinLista [ j + 1 ] , Personaje , Nominal ) ; // Crear columna para j+1.
j ++; // Luego iterar por j=j+1.
) ;
Para ( j = 1 , j <= N artículos ( pinLista ) , j ++,
Si ( Módulo ( j , 2 ) == 1 ,
dt2 << Nueva columna ( pinLista [ j ] , Numérico , Continuo , Formato ( "Mejor" , 12 ) ) , // Ejecutar para j impar.
dt2 << Nueva columna ( pinLista [ j ] , Personaje , Nominal ) // Ejecutar incluso para j.
)
) ;
// Ejemplo 1.
Para ( i = 1 , i <= 10 , i ++,
Imprimir ( i ) ;
Imprimir ( i ++ ) ;
) ;
// Ejemplo 2.
Para ( i = 1 , i <= 10 , i ++,
Imprimir ( i ) ;
Imprimir ( i + 1 ) ;
i ++;
) ;