Ciao a tutti,
Ho difficoltà a capire come aggirare Parse() aggiungendo spazi extra perché interferisce con la valutazione del mio codice.
Ho una tabella dati in cui ho una colonna di interesse denominata qualcosa come "AA BBBB CCC(dd)" e sto eseguendo una valutazione in cui desidero simulare le stime di un adattamento che ho eseguito. La sezione di codice in cui sto facendo questo è la seguente:
Eval(
Parse(
"\[report_of_interest[Number Col Box( 8 )] << Simulate(
NBSnum,
Random Seed( RSnum ),
Out( ]\"
|| YCols[1] || "\[ ),
In( :Simulated Y )
);]\"
)
);
Funziona benissimo per la maggior parte, ma il comando Parse() aggiunge spazi extra quando analizza la variabile YCols[1] e, quando lo fa, la piattaforma Simulate pensa che la colonna non esiste perché sta cercando un nome con spazi aggiuntivi. Quando valuto solo YCols[1], ottengo il nome della colonna come sopra: "AA BBBB CCC(dd)". Ma, quando I Parse(YCols[1]), il codice effettivo eseguito da Eval() utilizza una colonna con un nome simile a questo: "AA BBBB CCC( d - d )", che non è la colonna corretta nome perché Parse() inserisce spazi aggiuntivi tra le parentesi e la lettera "d", nonché spazi aggiuntivi attorno al carattere trattino "-". Questo è l'output nel registro incorporato quando eseguo solo la parte Parse() del codice sopra:
rapporto_di_interesse[Numero Col Box( 8 )] << Simula(
Numero NBS,
Seme casuale (RSnum),
Fuori (AA BBB CCC (d - d)),
In(:Simulato Y)
)
C'è un modo per aggirare questo problema o un altro modo per creare la stringa per l'analisi che non aggiunga spazi aggiuntivi?
Ho anche provato il modo seguente per creare la stringa per l'analisi, ma questo porta anche la piattaforma Simulate a cercare un nome di colonna con spazi aggiuntivi.
str = Eval Insert(
"report_of_interest[Number Col Box( 8 )] << Simulate(
NBSnum,
Random Seed( RSnum ),
Out("
);
str2 = Eval Insert( " ),
:Simulated Y )
)" );
Eval( Parse( str || ":" || Char( Eval( YCols )[1] ) || str2 ) );So che JSL non si preoccupa degli spazi bianchi extra, ma JMP sì quando si tratta dei nomi delle colonne.
Qualsiasi pensiero/idea è molto apprezzato.
Grazie!,
DS
Prova ad aggiungere ""n attorno al nome della colonna
Names Default To Here(1);
YCols= {"AA BBBB CCC(d-d)", "b"};
Parse(
"\[report_of_interest[Number Col Box( 8 )] << Simulate(
NBSnum,
Random Seed( RSnum ),
Out( "]\"
|| YCols[1] || "\["n ),
In( :Simulated Y )
);]\"
);E dovresti essere in grado di evitare di utilizzare Parse in questo caso (se lo desideri)
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("height+weight", Numeric, Continuous, Formula(
:height + :weight
));
dist = dt << Distribution(Continuous Distribution(Column(:height)));
ncb = Report(dist)[OutlineBox("Summary Statistics"), Number Col Box(1)];
mycol = "height+weight";
Eval(EvalExpr(
ncb << Simulate(
20,
Random Seed(1),
Out(:height),
In(Expr(NameExpr(AsColumn(dt, mycol))))
)
));
Puoi vedere se esegui la parte EvalExpr(), che il nome della colonna viene incorporato in "altezza+peso"n qui
ncb << Simulate(20, Random Seed(1), Out(:height), In(:"height+weight"n))