Espero hacer que algunas funciones que tengo sean un poco más reutilizables. Por ejemplo, estoy creando una tabla de resumen con columnas específicas de mi conjunto de datos. Me gustaría pasar la lista de columnas como argumento para permitirme tener una función "GetSummary" en lugar de "GetExperimentsSummary" y "GetCompoundsSummary", pero como estas necesitan diferentes cantidades de columnas, necesito poder empaquetar la lista de columnas por separado (probablemente en mi definición de clase) y luego pasarlas a la función como un argumento. ¿Es esto posible en jsl? ¿Cuál sería la sintaxis? Ejemplos de mis experimentos de obtención y obtención de compuestos a continuación, y estoy en JMP18.
//Get Experiments function
getexperimentssummary = function ({},
original_data << Summary(
Group(
:ExperimentID, :Read Date, :Experiment Type, :Plate Size, :Plate Type,
:Dispense Mode, :Probook Number, :Probook Page Number, :Experiment Notes
),
Freq( "None" ),
Weight( "None" ),
output table name("Experiment_summary")
);
experiment_summary = Data Table ("Experiment_summary");
experiment_id = "ExperimentID";
);
//Get Compounds Summary
getcompoundssummary = Function( {},
original_data << Summary(
Group(
:CompoundID, :Compound, :Compound Lot Number, :Compound Supplier, :Compound Catalog Number
),
Freq( "None" ),
Weight( "None" ),
output table name("Compound_summary")
);
compound_summary = Data Table ("Compound_summary");
Compound_ID = "CompoundID";
);
¿Buscas algo como esto?
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
get_summary = function({dt, collist}, {Default Local},
dt_summary = dt << Summary(
Group(Eval(collist)),
Freq("None"),
Weight("None"),
Link to original data table(0),
output table name((dt << get name) ||" Summary")
);
return(dt_summary);
);
dt_summary1 = get_summary(dt, {"sex"});
dt_summary2 = get_summary(dt, {"sex", "age"});