cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Learn how to build custom Python data connectors and further customize JMP’s Data Connector Framework with the Python Data Connector Demo, available now in the JMP Marketplace!
  • See how to create experiments to support product design and ID useful product features. Register for June 12 webinar, 2pm US Eastern Time.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
miguello
Level VII

Indexing into a list without errors

Let's say I have a file name that I parse into separate parts like so:

nameWords = Words(name, "_")

Let's say I want to make a short name out of the first five words of the original name:

shortName = Concat Items( nameWords[{1, 2, 3, 4, 5}], "_" );

Everything works fine while I'm getting names in the format that I expect, i.e. more than five words in the name.

But as soon as I get name like "aaa_bbb_ccc" (quite unexpected, but totally real) I get an error when indexing into my list.

Question: How do I index into not 5, but the least of 5 and the N Items of the list? Rather than write an IF statement to figure out which is less?

2 ACCEPTED SOLUTIONS

Accepted Solutions
miguello
Level VII

Re: Indexing into a list without errors

There you go:

shortName = Concat Items(nameWords[1::Min(NItems(nameWords), 5)])

View solution in original post

jthi
Super User

Re: Indexing into a list without errors

You could also use Left()

Names Default To Here(1);

a = "1_2_3_4_5_6_7_8";
b = "1_2_3";

Show(Concat Items(Left(Words(a, "_"), 5), "_"));
Show(Concat Items(Left(Words(b, "_"), 5), "_"));

 

 

-Jarmo

View solution in original post

2 REPLIES 2
miguello
Level VII

Re: Indexing into a list without errors

There you go:

shortName = Concat Items(nameWords[1::Min(NItems(nameWords), 5)])
jthi
Super User

Re: Indexing into a list without errors

You could also use Left()

Names Default To Here(1);

a = "1_2_3_4_5_6_7_8";
b = "1_2_3";

Show(Concat Items(Left(Words(a, "_"), 5), "_"));
Show(Concat Items(Left(Words(b, "_"), 5), "_"));

 

 

-Jarmo

Recommended Articles