la table est vide lorsqu'elle est référencéeSalut tout le monde!
J'ai essayé de sélectionner une colonne dans une table de données générée et de transformer cette colonne en une nouvelle table de données. Voici mon code:
//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] );
);
Lorsque j'ai testé les deux parties séparément en enregistrant le tableau de résultats dans la partie 1, puis en exécutant la partie 2, cela fonctionne. Mais je ne veux pas enregistrer le tableau de la partie 1 à chaque fois avant d'exécuter la partie 2, alors je les ai assemblés. Cependant, le script fusionné ne fonctionne pas. Dans ce cas, la table retournée par la partie 2 n'a que des valeurs manquantes (Empty()).
J'ajoute "show(mat);" dans le script pour voir ce qui s'est passé et il affiche "mat = Empty();" dans le journal. La valeur attendue de mat doit être un vecteur comme dans chaque ligne de la colonne X(n) du tableau de données de la partie 1.
Je ne sais pas ce qui n'allait pas. Toute aide serait appréciée!
Re : la table est vide lorsqu'elle est référencéeMerci pour la réponse!Re : la table est vide lorsqu'elle est référencéeEt merci pour le rapport ; la fonction de colonne effectuera les <
Re : la table est vide lorsqu'elle est référencéewait(n) n'est pas la meilleure solution ; il est difficile de savoir si n est assez grand. JMP évalue les formules de table en arrière-plan. La meilleure façon de s'assurer qu'ils ont évalué est
ret << RunFormulas;
après avoir construit la table. Il évaluera les formules de la table plus rapidement que de les attendre.
Re : la table est vide lorsqu'elle est référencéeJ'ai trouvé une solution qui peut résoudre mon problème : ajouter "wait(1)" entre les deux parties fonctionnera. (référence:
https://community.jmp.com/t5/Discussions/Add-new-column-with-formula-to-data-table-at-certain-position/td-p/14602).
mais je ne comprends pas pourquoi cela fonctionne... Existe-t-il un autre moyen qui peut également résoudre ce problème?
Re : la table est vide lorsqu'elle est référencéeDésolé. Je ne sais pas pourquoi quelque chose s'est mal passé avec le format. La première ligne du script est commentée...
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 table est vide lorsqu'elle est référencéeJe ne vois pas la référence à la variable "ret".Dans la seconde moitié du code, ret est utilisé, mais pas dans la 1ère moitié......