Cette démonstration va donc examiner certaines des fonctionnalités de base des listes et des matrices. Je vais donc commencer par les listes. Et je vais avoir une nouvelle fenêtre d'éditeur de script. Encore une fois, le raccourci clavier est Ctrl + T. Et je vais redimensionner et réorganiser cela. Laissez-moi aller de l'avant et apporter le journal devant le journal. Et je vais créer une variable que j'appellerai ma liste. Et je vais attribuer que les résultats de la fonction de liste. Donc la liste de mots ouvre des parenthèses, et je vais utiliser les variables a, b. Et puis je vais calculer la racine carrée de So thats sqrt puis entre parenthèses. Et je vais continuer et reformater juste pour obtenir la capitalisation et l'espacement là-dedans. Et je vais exécuter le script. Et donc ce qui apparaît dans le journal est simplement l'information qu'une liste de trois éléments a été assignée. Si je survole ma liste, ce que nous voyons, c'est qu'elle stocke les éléments que j'ai entrés non évalués. Il s'agit donc des deux variables et de la fonction racine carrée Sur une nouvelle ligne dans la fenêtre de mon éditeur de script, je vais demander l'évaluation des éléments de ma liste. Je vais donc taper eval list ouvrir parenthèses ma liste. Et je vais courir juste cette ligne. Et donc là je vois les résultats évalués. Maintenant, ma liste reste non évaluée. Donc, si je voulais travailler avec les résultats de la liste d'évaluation, une chose serait d'affecter le résultat de l'évaluation de la liste à une nouvelle liste. Cependant, il existe d'autres façons d'utiliser les indices pour travailler avec les éléments évalués de la liste. Donc, avant de parler de cela, permettez-moi de parler de l'inscription de la liste en général. Je vais donc passer à une nouvelle ligne. Et je vais taper ma liste entre crochets ouverts. Et je vais taper a pour extraire le deuxième élément de la liste. Et si je lance juste cette ligne, ce que je vois est l'élément non évalué. Et si je voulais le résultat évalué ? Eh bien, je peux en fait revenir à ma deuxième ligne ici. Je peux demander une évaluation de ma liste, puis inscrire ce résultat. Je vais donc mettre un crochet ouvert, a là-dedans, fermer le crochet. Et je vais exécuter à nouveau cette ligne, en utilisant la touche Entrée du pavé numérique à l'extrême droite du clavier de mon ordinateur de bureau. Alors là, j'ai juste inscrit la liste évaluée pour obtenir ce résultat. Nous avons parlé de modifier les listes. Je veux donc passer à une nouvelle ligne. Et je vais utiliser insert into. Donc insérer dans modifiera la liste en place. J'ouvre donc des parenthèses. Et quelle liste suis-je en train de modifier ? Eh bien, il est stocké dans ma liste. C'est le premier argument. Qu'est-ce que je veux ajouter ? J'ajouterai le nom de John. C'est donc une chaîne de caractères. Et si je ne mets pas cette virgule ici et que je ne fournis pas le troisième argument, cela le place simplement à la fin de la liste. Mais je vais avoir la virgule, et je vais taper a comme troisième argument facultatif pour le mettre en deuxième position. Et puis, je vais exécuter juste cette ligne. Et insert into ne renvoie en fait rien au journal. Mais si je survole ma liste partout où elle apparaît dans le script, vous pouvez voir qu'elle a été modifiée pour avoir le nom John en deuxième position. Maintenant, supposons que j'ai une liste, peut-être qu'elle m'a été renvoyée par une fonction JSL ou qu'elle a été utilisée pour collecter les entrées de l'utilisateur, par exemple. Et j'ai besoin de trouver un élément dans la liste pour pouvoir le supprimer. Je sais que c'est... eh bien, je ne sais pas si c'est dans la liste. Je veux d'abord demander si c'est dans la liste. Et puis si c'est le cas, je veux pouvoir l'enlever. Je vais donc créer une variable pour stocker la position de l'élément John. J'appellerai ça pos. Et j'attribuerai cela au résultat de la fonction contains. Et donc nous avons vu contient avec des chaînes de caractères. Maintenant, il contient une liste. Nous recherchons dans ma liste la chaîne de caractères John, et elle sera sensible à la casse, bien sûr. Et si j'exécute cette ligne, le résultat qui est renvoyé et stocké dans la variable pos est Et donc si je voulais ensuite supprimer cela de la liste, par exemple, je pourrais continuer et taper supprimer des parenthèses ouvertes. Nous cherchons dans ma liste. Et je veux au lieu de simplement supprimer le dernier élément, ce que j'obtiendrais si je ne fournissais rien après le premier argument, je vais utiliser la variable pos. Et je dirige cette ligne. Et cela renvoie une liste avec le nombre d'éléments supprimés. Par défaut, nous en prenons un à partir de la position spécifiée dans le deuxième argument. J'obtiens donc une liste contenant cette chaîne de caractères. Et je pourrais en fait affecter ce résultat à sa propre variable si je voulais utiliser cet élément de la liste ailleurs dans mon script. Et je pourrais aussi l'extraire de la liste dans laquelle il est retourné en indicant this avec un Alors laissez-moi -- pour le moment, ma liste ne contient plus John. Je vais relancer ma ligne. La valeur stockée dans pos sera toujours la même. Et je vais exécuter la ligne Et donc cela a renvoyé la chaîne de caractères qui n'est pas dans la liste. Et si je survole ma liste, on peut voir qu'elle a été ramenée à sa valeur précédente. Parlons un peu des matrices. Je vais faire un clic droit dans le journal pour l'effacer, puis sélectionner tout dans la fenêtre de l'éditeur de script et le supprimer. Je vais donc commencer par simuler des personnes, qui seront mes lignes dans ma matrice. Et chacune de ces personnes lancera un dé cinq fois, un dé à six faces. Et ce seront mes chroniques. Et je vais simplement les générer avec un générateur de nombres aléatoires, mais je vais commencer avec une valeur de départ spécifique afin que si vous suivez, vous obtiendrez exactement les mêmes nombres aléatoires. Et nous allons utiliser une fonction appelée la fonction j, qui crée une matrice avec un nombre spécifié de lignes et de colonnes. Ce sont ses deux premiers arguments, puis quelle sera la valeur dans la matrice, c'est le troisième argument. Je vais donc utiliser la fonction de réinitialisation aléatoire avec une valeur de Et, encore une fois, cela ne fait que spécifier ma graine de départ pour le générateur de nombres aléatoires. Je vais donc continuer et exécuter cela. Et puis sur une nouvelle ligne, je vais créer une variable m, à laquelle sera assigné le résultat de la fonction j. Encore une fois, je commence par le nombre de lignes où nous simulons des personnes, puis le nombre de colonnes, en lançant cinq fois un dé à six faces. Et j'utiliserai la fonction d'entier aléatoire avec les arguments-- nous allons commencer et sélectionner des nombres aléatoires jusqu'à ce. Je peux encore le reformater. Nous y voilà. Donc, il est également exécuté maintenant. Et si nous agrandissons un peu le journal, vous pouvez voir que j'ai cette matrice ligne par colonne. Et comment puis-je faire référence aux éléments de cette matrice ? Eh bien, nous utilisons des indices. Je vais donc passer à une nouvelle ligne. Peut-être que je suis intéressé par ce que la cinquième personne a obtenu lors de son troisième lancer de dé. Je vais donc mettre en indice le nom de la variable m, donc m puis les crochets. pour le numéro de ligne, virgule, pour le numéro de colonne, fermez le crochet et exécutez cette ligne. Et donc la cinquième personne pour son troisième lancer a lancé un Et nous pouvons en fait vérifier cela. Donc il y a un, deux, trois, quatre, il y a la cinquième ligne et il y a le troisième lancer de dé. Maintenant, que se passe-t-il si je veux trouver une ligne entière ou une colonne entière ? Eh bien, sur une nouvelle ligne ici - en fait, je vais utiliser la même ligne et remplacer simplement l'indice dans ma ligne Disons que je veux toute la ligne Donc, je tape pour le premier indice. Et puis après la virgule, je vais taper un indiquant que je ne veux pas qu'il sélectionne une colonne particulière. Cela va être ligne chaque colonne. Et je peux exécuter ça. Et cela me donne toutes les valeurs. Et nous pourrions, si vous voulez faire défiler vers le haut, vérifier que ce sont bien les valeurs de la ligne. C'est donc, en fait, ce que nous retournons. Je pourrais faire la même chose pour sélectionner une colonne où j'aurais juste un indice pour la ligne, puis n'importe quel numéro de colonne. Mais supposons que je veuille me débarrasser d'une ligne entière. Disons que je décide que la troisième personne a triché d'une manière ou d'une autre en lançant son dé. Je vais donc inscrire m avec a et a Et puis avant le point-virgule, je vais attribuer à cette ligne la valeur d'une matrice vide. J'ouvre et ferme donc les crochets. Et si j'exécute cette ligne, ce qui est renvoyé au journal est une matrice vide. Et si je survole m et que vous voulez compter les lignes, vous pouvez voir qu'il n'y a plus que neuf lignes maintenant. Maintenant, encore une fois, juste pour jouer avec certaines des choses que nous pouvons faire avec les matrices, supposons que les neuf personnes restantes jouent chacune le dé une sixième fois. Je vais donc le faire sur place. Les opérateurs, j'aurai m. Et puis l'opérateur d'assignation sera le Concat Donc c'est les doubles barres verticales et un signe égal. Pas d'espaces, car nous ne pouvons pas avoir d'espaces entre les composants de ces opérateurs qui ont plusieurs caractères. Et j'utiliserai à nouveau la fonction j. Et nous n'avons que neuf rangées. Et je veux une colonne. Et je vais utiliser à nouveau un entier aléatoire. Et pour ses arguments, c'est toujours un dé à six faces, donc je vais fournir Donc, cela modifiera m en place en ajoutant une sixième colonne lorsque j'exécuterai cette ligne. Et donc là, vous pouvez voir maintenant que nous avons six colonnes dans la matrice. Effacons le journal. Et je vais recommencer en attribuant des valeurs à m. Je ne vais plus utiliser de nombres aléatoires. Je vais donc effacer le contenu de la fenêtre de l'éditeur de script. Je vais initialiser une variable de compteur i et lui attribuer la valeur de Je vais donc l'exécuter juste pour l'initialiser. Et puis sur une nouvelle ligne, j'attribuerai une matrice différente à m. Ainsi m sera assigné le résultat de la fonction j. Il aura cinq rangées. Cette matrice aura cinq lignes, cinq colonnes et, à partir de, incrémentera i de pour chaque élément de la matrice. Je vais donc utiliser le i plus plus, cet opérateur de post-incrémentation qui s'ajoute en place. Et je vais aller de l'avant et exécuter cela. Et donc j'ai une matrice par. Et notez que nous incrémentons par ligne, pas par colonne. Et c'est important pour une autre méthode d'abonnement que nous allons voir arriver. Nous incrémentons donc ligne par ligne. Maintenant, que se passe-t-il si je veux une séquence qui monte réellement à Eh bien, il y a certainement de nombreuses façons différentes de le faire. Mais un moyen rapide serait simplement de multiplier chaque élément de la matrice que je viens de créer par Et encore une fois, nous pouvons vectoriser ces opérations. Je n'ai pas à parcourir la matrice. Je viens d'affecter -- Et je vais faire une autre affectation sur place -- m puis l'astérisque est égal, donc la multiplication par Nous n'avons pas à le faire sur place. Mais plutôt que de créer une nouvelle variable, je vais le faire. Donc encore une fois, je n'ai pas à boucler. Ça va aller élément par élément en multipliant tout par Et je lance ça. Et donc il y a cette matrice qui va de à par incréments de Maintenant, une autre façon de créer cette matrice serait en deux étapes, en commençant par la fonction index. Je vais donc effacer ce qui se trouve dans la fenêtre de l'éditeur de script. Je vais continuer et effacer le journal également. Et dans la fenêtre de l'éditeur de script, je vais taper m. Et cela se verra attribuer la valeur qui résulte de la fonction d'index - les parenthèses ouvertes d'index. Et nous commencerons à Nous compterons jusqu'à Le troisième argument facultatif, que j'utiliserai ici est l'incrément. Nous allons donc passer par Voici donc la première étape de la création de cette matrice que nous avions la matrice par. Nous créons donc un vecteur ligne à l'aide de la fonction index. Et puis, je peux façonner ça. Je vais donc passer à une nouvelle ligne. Je vais m'écraser à nouveau. Donc m sera le résultat de la fonction de forme, qui prendra m comme premier argument et changera ses dimensions pour avoir cinq lignes et cinq colonnes. Vous devez être très prudent avec cette fonction de forme. Si votre vecteur de ligne dans ce cas ne correspond pas à une matrice carrée que j'ai spécifiée ici, JMP tronquera ce vecteur si la matrice que vous spécifiez avec shape est trop petite. Ou si vous spécifiez une matrice plus grande, elle commencera simplement à répéter le vecteur. Soyez donc prudent lorsque vous utilisez la fonction de forme. Donc je veux courir ça. Et il y a encore cette matrice carrée, allant de à par incréments de Maintenant, une partie de la raison pour laquelle je voulais faire cela, mis à part le fait qu'il existe généralement de nombreuses façons de tout faire dans JMP, est de parler d'une autre façon d'indicer. Nous avons vu les indices ligne par colonne. Et je veux parler de l'indice unique que vous verrez parfois. Donc, si je voulais-- nous pouvons utiliser la fonction contains avec-- nous l'avons vu avec des chaînes de caractères. Vous pouvez l'utiliser avec des listes. Nous pouvons l'utiliser avec des matrices. Si je veux trouver l'emplacement du nombre dans la matrice qui est actuellement stocké m, eh bien, si je décrivais cela, je dirais, OK, c'est la colonne de ligne. J'utiliserais donc un indice de virgule. Mais si je demandais à JMP de trouver cela pour moi, je vais donc utiliser le contenu. Et encore une fois, en pratique, votre script peut affecter ce résultat à une variable. Je n'ai pas besoin de le faire ici-- contient puis m virgule JMP ne va pas me donner Il va me donner une seule valeur. Eh bien, comment fonctionne cette valeur unique ? L'indice à valeur unique - donc si je revenais - je vais aller sur une nouvelle ligne ici et taper m, puis les crochets avec un indice à valeur unique et l'exécuter. C'est l'indice à valeur unique qui va traiter ma matrice comme s'il s'agissait d'un vecteur ligne et commencer à compter à partir de la première position. Ainsi, lorsque nous revenons dans le journal pour voir le résultat de ma fonction d'index, cet indice unique le traite comme un vecteur de ligne et compte par ligne, tout comme nous avons incrémenté par ligne, pour obtenir l'emplacement de cette valeur. Et nous verrons d'autres exemples lorsque nous travaillerons plus tard avec des matrices où JMP nous renverra cet indice unique. La dernière chose que nous ferons ici est juste une sorte de calcul arbitraire pour illustrer qu'il existe des fonctions qui peuvent prendre des matrices comme arguments, des fonctions de calcul -- nous avons donc déjà vu la fonction de forme et contient. Mais je vais passer à une nouvelle ligne ici et taper log, puis m comme argument divisé par Et l'autre chose à propos de cet exemple -- eh bien, laissez-moi l'exécuter. Et puis je vais vous dire l'autre chose à propos de l'exemple. Donc, je viens de faire ce calcul sur chaque élément et divisé par Mais l'autre chose que je veux juste mentionner est qu'en JSL, les fonctions peuvent prendre des fonctions comme arguments. Nous verrons cela tout au long. Nous avons déjà vu quelques exemples. Donc cet opérateur de division, c'est vraiment la fonction de division prenant le log de m comme argument et puis Et je n'ai pas eu besoin de calculer le log de m et de le stocker dans une variable pour le fournir à la fonction de division. Je suis capable de faire ce calcul directement. Et encore une fois, ce à quoi cela ressemblerait si j'écrivais la fonction serait de diviser les parenthèses ouvertes. Remplacez l'opérateur par une virgule et fermez les parenthèses. Je n'ai donc pas à fournir de variable stockant ces valeurs. Je peux les calculer pendant que j'exécute la fonction de division. Ce sont donc plusieurs exemples de listes et de matrices et certaines des façons dont nous pouvons travailler avec ces types particuliers de structures de données.