problema de bucle cuando la columna como variableTengo una tabla llamada dt y tiene muchas columnas. Quiero encontrar los que faltan en columnas específicas y llenar con "N". A continuación se muestra mi secuencia de comandos, pero la variable col[i] no funciona.Intenté reemplazar como columna (dt, col [i]) con columna (dt, col [i]), pero no funcionó. Sin embargo, cuando reemplazo la columna as (dt, col [i]) con el verdadero nombre de la columna (ejemplo: A), el script funciona. Alguna sugerencia donde esta mi error?
col={"A", "B", "C", "D", "E"};
For( i = 1, i<= N Items( col ), i++,
empty_rows = dt << get rows where (is missing(as column(dt, col[i])));
if (nrows(empty_rows) > 0,
as column(dt, col[i])[empty_rows] = "N";
);
);secuencias de comandosRe: problema de bucle cuando la columna como variableTu código funciona bien.Dada una tabla de datos

y ejecutando una copia de su código
names default to here(1);
dt=current data table();
col={"A", "B"};
For( i = 1, i<= N Items( col ), i++,
empty_rows = dt << get rows where (is missing(as column(dt, col[i])));
if (nrows(empty_rows) > 0,
as column(dt, col[i])[empty_rows] = "N";
);
);
Da como resultado lo siguiente

El problema que puede tener es que si sus columnas A, B, C, D, E son numéricas, no podrá colocar un valor de carácter en la celda.JMP lo convertirá a un valor faltante "."
Re: problema de bucle cuando la columna como variableHola Jim,
Gracias Jaime por tu ayuda.
Lo intenté muchas veces y todavía no funciona. después de su validación en el código. Decidí cerrar JMP y volver a abrirlo. Esta vez, está funcionando. Me pregunto si es por el problema del caché. ¿Hay alguna manera de limpiar el caché de jmp sin reiniciar JMP? Mi suposición puede ser incorrecta, pero cualquiera que pueda dar una sugerencia será útil.
Re: problema de bucle cuando la columna como variableSin ver todo el código, el problema podría estar relacionado con la variable dt. En general, es una buena idea iniciar los scripts JSL con Nombres predeterminados aquí (1);. Esto permitirá que los nombres no resueltos se almacenen en el espacio de nombres Here.
Puede borrar variables con Delete Symbols(), Delete Globals() y, a veces, es posible que también deba borrar algunos espacios de nombres.
Aquí también hay otra opción para cambiar valores vacíos usando Loc y subíndices de tablas de datos:
Names Default To Here(1);
dt = Current Data Table();
col = {"A", "B"};
For(i = 1, i <= N Items(col), i++,
empty_rows = Loc(dt[0, col[i]], "");
If(N Rows(empty_rows) > 0,
dt[empty_rows, col[i]] = "N";
);
);