cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Sign-in to the JMP Community will be unavailable intermittently Dec. 6-7 due to a system update. Thank you for your understanding!
  • We’re retiring the File Exchange at the end of this year. The JMP Marketplace is now your destination for add-ins and extensions.
  • JMP 19 is here! Learn more about the new features.

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