la mesa está vacía cuando se hace referencia ¡Hola a todos!
Intenté seleccionar una columna en una tabla de datos generada y transformar esa columna en una nueva tabla de datos. Lo siguiente es mi código:
//part 1: generate a data table<BR />ret = New Table( title,
Add Rows (rowNum),
New Column( "P", Expression, "Continuous", Formula( pmatrix ) ),
New Column( "X(n)",
Expression,
"None",
Formula( If( Row() == 1, init_state, Lag( :Name( "X(n)" ), 1 ) * :p</img> ) ),
Set Selected,
),
New Column( "steady state",
Expression,
"None",
Formula( :Name( "X(n)" ) - Lag( :Name( "X(n)" ) ) == zeros ),
),
New Column( "States", Character, Values( names ) ),
);
// part 2: select column X(n) and transform it into a new table
<STRONG>mat = Column(ret,"X(n)")[1];
show(mat);</STRONG>
For(i = 2, i <= N Rows(ret), i++,
V Concat To(mat,Column(ret,"X(n)")[i]);
);
table = As Table(mat);
names = Column(ret, "States") << get values;
For(i = 1, i <= N Col(table), i++,
Column(i) << Set Name( names[i] );
);
Cuando probé las dos partes por separado guardando la tabla de resultados en la parte 1 y luego ejecutando la parte 2, funciona. Pero no quiero guardar la tabla en la parte 1 todo el tiempo antes de ejecutar la parte 2, así que las armé. Sin embargo, el script combinado no funciona. En este caso, la tabla devuelta por la parte 2 solo tiene valores faltantes (Vacío ()).
Añado "show (mat)"; en el script para ver qué sucedió y muestra "mat = Empty ();" en el registro El valor esperado de mat debe ser un vector como en cada fila de la Columna X (n) de la tabla de datos en la parte 1.
No sé qué salió mal. ¡Cualquier ayuda sería apreciada!
Re: la tabla está vacía cuando se hace referencia¡Gracias por la respuesta!Re: la tabla está vacía cuando se hace referenciaY gracias por el informe; La función de columna realizará las << runFormulas internamente en JMP 15.
Re: la tabla está vacía cuando se hace referenciaesperar (n) no es la mejor solución; es difícil saber si n es lo suficientemente grande. JMP evalúa las fórmulas de la tabla en el fondo. La mejor manera de asegurarse de que han evaluado es
ret << RunFormulas;
después de construir la mesa. Evaluará las fórmulas de la tabla más rápido que esperarlas.
Re: la tabla está vacía cuando se hace referenciaEncontré una solución que puede resolver mi problema: agregar "esperar (1)" entre las dos partes funcionará. (referencia:
https://community.jmp.com/t5/Discussions/Add-new-column-with-formula-to-data-table-at-certain-position/td-p/14602).
pero no entiendo por qué esto funciona ... ¿Hay alguna otra manera que también puede abordar este problema?
Re: la tabla está vacía cuando se hace referenciaLo siento. No sé por qué algo salió mal con el formato. Se comenta la primera línea del guión ...
ret = New Table(
Add Rows (rownum),
New Column( "P", Expression, "Continuous", Formula( ptable << get as matrix ) ),
New Column( "X(n)",
Expression,
"None",
Formula( If( Row() == 1, init_state, Lag( :Name( "X(n)" ), 1 ) * :p</img> ) ),
Set Selected,
),
New Column( "steady state",
Expression,
"None",
Formula( :Name( "X(n)" ) - Lag( :Name( "X(n)" ) ) == zeros ),
),
New Column( "States", Character, Values( names ) ),
);
Re: la tabla está vacía cuando se hace referenciaNo veo la referencia a la variable "ret". En la segunda mitad del código, se usa ret, pero no en la primera mitad ......