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 데이터 테이블을 사용하면 됩니다.