Creazione di colonne in un ciclo<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao,
Quindi nel mio script ho un ciclo che crea colonne, funziona benissimo, ma voglio migliorarlo un po'. Ho dati che si presentano nella forma (numero)|(carattere)|(numero)|(carattere) ecc. Quindi ho tipi di dati alternati e vorrei stamparli nella loro forma normale. In questo momento, le colonne sono in formato numerico, quindi non riesco a vedere nessuno dei dati dei caratteri. Ma se lo cambio in formato carattere, perdo la struttura dei dati numerici. Quindi ho questo ciclo:
For(j = 1, j <= nitems(pinList), j++,
dt2 << Nuova colonna(pinList, Numerico, Continuo, Formato("Migliore",12));
dt2 << Nuova colonna(pinList[j++], Carattere, Nominale);
);
Dove definisco tutti i nomi delle colonne nel mio array pinList. Funziona, tranne per il fatto che duplica la voce in pinList(che in questo caso, in realtà non è una brutta cosa). il vero problema arriva quando provo a eseguire un altro ciclo dopo di esso che analizza i dati che sono delimitati da un '|' e inseriscilo nelle nuove colonne.
For (i = 1, i <= nrows(dt2), i++,
one_test_result_list = parole(colonna(dt2,"Test_Result") , "|");
For (k = 1, k <= nitems(one_test_result_list), k++,
Colonna(dt2, pinList) = one_test_result_list;
);
);
L'ultima riga viene eseguita una volta e quindi si interrompe perché la voce successiva in pinListha un "2" dopo perché quando sono state create le colonne, ha duplicato ogni nome. Non sono sicuro di come farlo funzionare. Posso definire tutti i nomi che voglio nell'array pinList ma voglio alternare i tipi di colonna di numerici e caratteri.
Qualsiasi aiuto è molto apprezzato! Grazie!!
Ri: Creazione di colonne in un cicloAvevo provato una variazione di questo, ma ho messo j++ prima della seconda nuova riga di colonna. Ho anche usato l'istruzione if per scorrere il mio elenco di dati analizzati. Quindi li ho combinati in questo modo:
Per ( j = 1 , j <= N articoli ( pinList ) , j ++,
dt2 << Nuova Colonna ( pinList [ j ] , Numerico , Continuo , Formato ( "Migliore" , 12 ) ) ;
dt2 << Nuova Colonna ( pinList [ j + 1 ] , Carattere , Nominale ) ; // Crea una colonna per j+1.
j ++; // Quindi itera per j=j+1.
) ;
Per ( io = 1 , io <= N righe ( dt2 ) , io ++,
one_test_result_list = Parole ( Colonna ( dt2 , "Risultato del test" ) [ io ], "|" ) ;
Per ( j = 1 , j <= N articoli ( one_test_result ) , j ++,
Se ( Modulo ( j , 2 ) == 1 ,
Colonna ( dt2, elenco pin [ K ]) [ io ] = Num ( one_test_result_list [ K ]) ; // Esegui per dispari j
Colonna ( dt2, elenco pin [ K ]) [ io ] = one_test_result_list [ K ] ; // Esegui per pari j
);
);
) ;
Funziona perfettamente. Quindi si assicura che i risultati numerici vengano stampati come numeri e che i caratteri siano nel loro formato normale. Grazie mille per il vostro aiuto!!
Ri: Creazione di colonne in un ciclociao sofia,
Se capisco correttamente il tuo script, penso che il problema sorga dal tuo uso di j++ all'interno del corpo del tuo ciclo, perché j++ ripeterà solo j dopo che il ciclo ha completato un'iterazione.Posso pensare a un paio di modi per aggirare questo problema.Un metodo consiste nel sostituire j++ con j+1, quindi aggiungere una riga separata per j++.L'altro metodo consiste nell'aggiungere un'istruzione If() per creare comandi separati per j pari e dispari.
Vedere gli esempi 1 e 2 per un esempio di come i++ opera all'interno del corpo di un ciclo.
Spero che aiuti.
I nomi predefiniti sono qui ( 1 ) ;
dt2 = Nuova Tavola ( "dt2" , Aggiungi righe ( 20 ) ) ;
pinList = { "UN" , "B" , "C" , "D" , "E" , "F" } ;
Per ( j = 1 , j <= N articoli ( pinList ) , j ++,
dt2 << Nuova Colonna ( pinList [ j ] , Numerico , Continuo , Formato ( "Migliore" , 12 ) ) ;
dt2 << Nuova Colonna ( pinList [ j + 1 ] , Carattere , Nominale ) ; // Crea una colonna per j+1.
j ++; // Quindi itera per j=j+1.
) ;
Per ( j = 1 , j <= N articoli ( pinList ) , j ++,
Se ( Modulo ( j , 2 ) == 1 ,
dt2 << Nuova Colonna ( pinList [ j ] , Numerico , Continuo , Formato ( "Migliore" , 12 ) ) , // Esegui per dispari j.
dt2 << Nuova Colonna ( pinList [ j ] , Carattere , Nominale ) // Esegui per pari j.
)
) ;
// Esempio 1.
Per ( io = 1 , io <= 10 , io ++,
Stampa ( io ) ;
Stampa ( io ++ ) ;
) ;
// Esempio 2.
Per ( io = 1 , io <= 10 , io ++,
Stampa ( io ) ;
Stampa ( io + 1 ) ;
io ++;
) ;