Découpage de tableaux associatifs ?Indexation de la matrice Fox, on peut utiliser 0 et obtenir une tranche complète :
m = [ 1 2 , 3 4];
m[0,1]; // [1, 3]
Pour les tableaux de données, cela fonctionne également :
test = new table("test", <BR />add rows(10), <BR />new column("col1",Character, set each value({"A","B","C"}[random integer(3)])),<BR />new column("col2", set each value(random uniform(5))));
test[4,0]
Pour les listes de listes, ce n'est pas possible :
list= {{"A", 3},{"B", 5}};
list[0,1]Sure, there are many lists of lists where such slicing is not possible, like {{"A", 3},{"B"}}.
D’un autre côté, il existe de nombreuses listes qui le permettraient.
Là où cela devient vraiment intéressant : les tableaux associatifs de tableaux associatifs .
Comme pour les listes, le concept de tableaux associatifs est plus flexible que ce que nous pouvons faire avec une matrice ou une table de données - donc le découpage ne fonctionnera pas pour eux. Mais comme pour les listes, il existe des tableaux associatifs où le découpage fonctionnera...
Existe-t-il une fonction en JSL, quelque chose comme monTableauAssociatif[0, "poids"] , qui fait ce travail ?
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
dt << Save( "$DOWNLOADS/test.json" );
// for sake of simplicity we accept to lose 1x ROBERT
myIndex=dt[0,"name"]
myAssociativeArray = Associative Array(myIndex,ParseJSON(Load text file ( "$DOWNLOADS/test.json")));
<BR />// cool, but not what we want
mapToWeight = Transform Each({{key, value}}, aa, value["weight"]);
SliceAssociativeArray= Function({aa, indexname},
Transform Each({value}, aa << get values, value[indexname])
);
SliceAssociativeArray(myAssociativeArray ,"weight") //myAssociativeArray [0, "weight"]
Automatisation et scriptsRe : Découpage de tableaux associatifs ?Différentes structures de données ont des utilisations différentes, pour un tableau associatif (je pense), cela signifie stocker des clés uniques et obtenir rapidement les valeurs de ces clés (il stocke les paires clé-valeur). Transformer Chacun est une bonne option à utiliser, il suffit de modifier la sortie
weights = Transform Each({{key, value}}, aa, Output("List"),
value["weight"]
);
Re : Découpage de tableaux associatifs ?Une autre astuce sympa – très utile:)
En ce qui concerne la facilité d'utilisation, je pense
weights = Transform Each({{key, value}}, aa, Output("List"),
value["weight"]
);et
Transform Each({value}, aa << get values, value["weight"])à partir du message d'origine sont sur une valeur comparable
... assez loin de aa[0, "poids"]
Imaginez que vous souhaitiez obtenir tous les aa[0,"2024",0,0,"date"].
Re : Découpage de tableaux associatifs ?Je ne suis pas sûr de ce que cela devrait "interroger" aa[0,"2024",0,0,"date"]. Si vous souhaitez uniquement obtenir des indices "0", vous pouvez stocker vos valeurs dans un tableau associatif de telle manière que vos clés soient des noms de colonnes et que vos valeurs soient des listes de valeurs de ligne.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
aa = Associative Array();
For Each({colname}, dt << Get Column Names("String"),
aa[colname] = As List(Column(dt, colname) << get values);
);
En général, si je souhaite stocker mes données dans un format de tableau auquel on peut accéder comme un tableau, j'utiliserais simplement une table de données JMP (privée).
Re : Découpage de tableaux associatifs ?bonne remarque : ):)