Ayuda con contiene dentro de if elseHola,
He escrito el siguiente fragmento de código que verifica si una lista contiene un carácter y realiza algunos pasos en consecuencia.
Por alguna razón, la secuencia de comandos no verifica la condición "si contiene" y siempre ejecuta la otra parte. Creo que tengo un error tonto aquí.
Clear Symbols();
Delete Symbols();
clear globals();
dtNext = Open("C:\temp\output.csv","invisible");
Summarize(dtNext, testlist = By(:test));
show(testlist );
SAVEPATH = "C:\temp\";
If(contains(testlist ,"M"),
Macrodt=New Table("test_type",
New Column("test_type",
Character,
Nominal,
Set Values( {"Morning"})
),
invisible
);
, //else
Macrodt=New Table("test_type",
New Column("test_type",
Character,
Nominal,
Set Values( {"Evening"})
),
invisible
);
);
//Save macro file
Macrodt<<SAVE></SAVE>
Re: Ayuda con contiene dentro de if elseUsé la función cocncatitems y funcionó.
Gracias
Re: Ayuda con contiene dentro de if elseComo @Jeff_Perkinson sugiere, más información ayudaría, pero probaré lo que creo que puede ser una fuente de confusión para usted. La función "Contiene" se puede usar en una lista O en una cadena... si está buscando si algún elemento de la lista contiene un carácter específico, su declaración "Si" no producirá el resultado deseado tal como está escrito. Si esa es su intención, podría rodear su variable "lista de prueba" con la función Elementos Concat en la declaración "Si", es decir, Elementos Concat (lista de prueba) se evalúa como una sola cadena compuesta por todos los elementos de la lista unidos. Ahora la función Contiene devolverá una respuesta positiva cuando busque un carácter específico si existe en la nueva cadena.
Espero que esto ayude.
Re: Ayuda con contiene dentro de if elseNo hay ningún error obvio en su código. Necesitaremos algunos detalles más para ayudar a determinar dónde está la confusión.
Aquí hay un ejemplo que muestra que su prototipo es correcto.
dts = {"$SAMPLE_DATA\Fitness.jmp", "$SAMPLE_DATA\Big Class.jmp"};
For( i = 1, i <= N Items( dts ), i++,
dtNext = Open( dts[i] );
Summarize( dtNext, testlist = By( :age ) );
Show( testlist );
If( Contains( testlist, "42" ),
Show( "testlist contains 42" );
, //else
Show( "testlist doesn't contain 42" )
);
);
El registro:
/*:
testlist = {"38", "40", "42", "43", "44", "45", "47", "48", "49", "50", "51", "52", "54", "57"};
"testlist contains 42";
testlist = {"12", "13", "14", "15", "16", "17"};
"testlist doesn't contain 42";