Fox 矩阵索引,可以使用 0 并获得完整切片:
m = [ 1 2 , 3 4];
m[0,1]; // [1, 3]
对于数据表这也适用:
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]
对于列表的列表,这是不可能的:
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"}}.
另一方面,确实有很多列表允许这样做。
真正有趣的是:关联数组的关联数组。
与列表一样,关联数组的概念比矩阵或数据表更灵活 - 因此切片对它们不起作用。但与列表一样,存在可以使用切片的关联数组...
JSL 中是否有类似myAssociativeArray[0, “重量”]的函数可以完成这项工作?
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"]
不同的数据结构有不同的用途,对于关联数组(我认为)来说,它意味着存储唯一键并快速获取这些键的值(它存储键值对)。Transform Each 是一个很好的选择,只需更改输出
weights = Transform Each({{key, value}}, aa, Output("List"),
value["weight"]
);
另一个很酷的技巧 - 非常有用:)
从可用性来看,我认为
weights = Transform Each({{key, value}}, aa, Output("List"),
value["weight"]
);和
Transform Each({value}, aa << get values, value["weight"])与原帖的价值相当
... 与aa[0, “重量”]相差甚远
试想一下,您想要获取所有aa[0,"2024",0,0,"date"]。
我不确定这应该“查询” aa[0,"2024",0,0,"date"] 什么。如果您只希望获得“0”索引,则可以以这样的方式将您的值存储到关联数组中,即您的键是列名,值是行值的列表。
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);
);
一般来说,如果我想将数据存储为表格格式,以便可以像表格一样访问,我只需使用(私有)JMP 数据表。