La fórmula no funciona dentro de un bucle FORHola,
Al trabajar con un cliente cuyo objetivo es automatizar la recopilación de datos de varios estudios clínicos, utilizamos la grabadora de acciones para obtener las líneas de guión adecuadas.
Ahora estoy simplificando el script usando listas y bucles para que sea genérico para un uso mayor.
Pude hacerlo hasta la fila 58. En las filas 58-61 trato de reproducir lo que sucede con las filas 63-100 usando un bucle FOR y una fórmula como se muestra a continuación:
For( i = 1, i <= N Items( colList ), i++,
Data Table( "Summary with Dose=0" ) <<
New Column( colList_Sum_3[i],
Numeric,
"Continuous",
Format( "Best", 12 ),
formula( colList_Sum_1[i] - colList_Sum_2[i] )
)
);
Crea las columnas apropiadas (basadas en una lista) pero no las fórmulas en cada columna.
Probé con Eval/Expr pero tengo que admitir que no sé cómo y cuándo usarlos.
Gracias por la ayuda.
emmanuel
Re: La fórmula no funciona dentro de un bucle FOR¿Hace esto lo que tenías en mente? Es posible que pueda hacerlo sin usar el manejo de expresiones, pero creo que este enfoque es más sólido, particularmente cuando tiene que lidiar con nombres de columnas problemáticos (por ejemplo, cuando tiene un operador matemático o una palabra estadística reservada). La idea es tratar los dos argumentos del mensaje Join que necesitan las columnas como expresiones, crearlas insertando referencias de columna en ellas (no use nombres debido al problema que mencioné anteriormente), luego insértelas en el Entrar mensaje con Sustituir (que puedes poner en exp. por lo que la expresión también se evalúa). Un tema recurrente es el uso de Nombre Expr. para evitar que la variable con la que está trabajando se evalúe por completo (es decir, desea tratar el contenido de la variable como una expresión, no está interesado en su valor evaluado). Espero que esto ayude.
Don
Re: La fórmula no funciona dentro de un bucle FORHola Emmanuel,
Estás solo un poco fuera de lugar. Pruebe el script adjunto. Parece funcionar en sus datos de muestra.Las correcciones se comentan como //Pruebe esto en su lugar. Su código original está comentado.
Mejor,
jason
Re: La fórmula no funciona dentro de un bucle FORReposteado con el script correcto
Re: La fórmula no funciona dentro de un bucle FORHola Don, ¿cambiaste algo en el guión? Supongo que copiaste/pegaste el original sin ningún cambio o me lo perdí.
Re: La fórmula no funciona dentro de un bucle FORHola Jason,
devuelve columnas que contienen una fórmula: Column(colList_Sum_1[i]) - /*###*/Column(colList_Sum_2[i]) /*###*/
pero no se hace ningún cálculo.
emmanuel
Re: La fórmula no funciona dentro de un bucle FORlo siento emmanuel
Publicó inicialmente el guión original. Reposteado con el guión editado.
Don
Re: La fórmula no funciona dentro de un bucle FORTodo debería funcionar hasta la línea 76 en mi script editado. Parece que más allá de esto, ¿podrías resolver el problema de la misma manera que lo hiciste con los bucles anteriores?Me gusta el manejo de la expresión de Don para la unión. Vale la pena considerar esto. Todavía tiene que lidiar con las listas de columnas y los nombres de las columnas, por lo que tal vez pueda obtener ideas de nuestros dos scripts.Enviaré una actualización más tarde hoy con una solución para las 37 líneas inferiores de su secuencia de comandos.
Re: La fórmula no funciona dentro de un bucle FORHola Jason,
en sus líneas de script editadas 69-76 no devuelve ningún cálculo
For( i = 1, i <= N Items( colList ), i++,
Data Table( "Summary with Dose=0" ) << New Column( colList_Sum_3[i],
Numeric,
"Continuous",
Format( "Best", 12 ),
formula( Column( colList_Sum_1[i] ) - Column( colList_Sum_2[i] ) )
)
);
Para aclarar las líneas 69-76 (58-61 en el guión original), intente reemplazar las líneas 78-115 (63-100 en el guión original).
El resto de la secuencia de comandos está bien, está en las líneas 69-76 (58-61 en la secuencia de comandos original) que estoy atascado.
Re: La fórmula no funciona dentro de un bucle FORHola Don, he pasado por el aprendizaje electrónico sobre secuencias de comandos, pero me cuesta entender Eval, Expr, NameExpr, ... por casualidad, ¿tienes algún curso complementario, documentación que pueda ayudar?