
이 데모에서는 목록과 행렬의 몇 가지 기본 기능을 살펴보겠습니다. 목록부터 시작하겠습니다. 새 스크립트 편집기 창을 엽니다. 단축키는 Ctrl+T입니다. 크기를 조정하고 다시 정렬하겠습니다. 일지 앞으로 로그를 가져오겠습니다. 'my list'라는 변수를 만들고 여기에 목록 함수의 결과를 할당합니다. 'list'라는 단어를 괄호로 묶고 변수 a, b를 사용합니다. 그런 다음 제곱근을 계산합니다. sqrt와 괄호로 묶습니다. 대소문자와 간격을 조정하기 위해 형식을 변경합니다. 스크립트를 실행합니다. 로그에 표시되는 내용은 세 개의 요소가 있는 목록이 할당되었다는 정보입니다. 목록 위에 마우스를 올리면 입력한 항목이 평가되지 않은 상태로 저장되어 있는 것을 볼 수 있습니다. 그래서 두 개의 변수와 제곱근 함수입니다.스크립트 편집기 창의 새 줄에서 목록에 있는 항목의 평가를 요청합니다.그러므로 eval list open parentheses my list를 입력합니다.그리고 그 줄만 실행합니다.그러면 평가된 결과가 표시됩니다.지금은 목록이 평가되지 않은 상태입니다.따라서 eval list의 결과를 사용하려면 목록 평가 결과를 새 목록에 할당해야 합니다.하지만 목록에서 평가된 항목을 작업하기 위해 서브스크립트를 사용할 수 있는 다른 방법도 있습니다.그러므로 이에 대해 이야기하기 전에 일반적으로 목록에 서브스크립트를 사용하는 방법에 대해 이야기하겠습니다.그러므로 새 줄로 이동합니다.그리고 목록의 열린 대괄호를 입력합니다.그리고 목록에서 두 번째 항목을 추출하기 위해 a를 입력합니다.그리고 그 줄만 실행하면 평가되지 않은 항목이 표시됩니다.그렇다면 평가된 결과가 필요하다면 어떻게 해야 할까요?사실 두 번째 줄로 돌아올 수 있습니다. 목록의 평가를 요청한 다음 결과에 아래 첨자를 추가할 수 있습니다.그러니 열린 대괄호 a를 그 안에 넣고 대괄호를 닫습니다.그리고 데스크톱 컴퓨터 키보드의 가장 오른쪽에 있는 숫자 키패드의 Enter 키를 사용하여 해당 줄을 다시 실행합니다.그러니까 평가된 목록에 아래 첨자를 추가하여 해당 결과를 다시 얻었습니다.목록 수정에 대해 이야기했습니다.그러니 새 줄로 이동하고 싶습니다.그리고 insert into를 사용할 것입니다.그러면 insert into는 목록을 제자리에서 수정합니다.그러니 괄호를 엽니다.그리고 어떤 목록을 수정할까요?음, 목록에 저장되어 있습니다.첫 번째 인수입니다.무엇을 추가하고 싶나요?이름 John을 추가하겠습니다.그러면 문자열입니다.그리고 그 쉼표를 거기에 넣지 않고 세 번째 인수를 제공하지 않으면 목록의 끝에 추가됩니다.하지만 쉼표를 사용할 것이고, 두 번째 위치에 넣기 위해 선택적인 세 번째 인수로 a를 입력할 것입니다. 그런 다음 해당 줄만 실행합니다. insert into는 실제로 로그에 아무것도 반환하지 않습니다. 하지만 스크립트에서 목록이 나타나는 곳 어디에든 마우스를 올려놓으면 두 번째 위치에 John이라는 이름이 있도록 수정된 것을 볼 수 있습니다. 이제 목록이 있다고 가정해 보겠습니다. JSL 함수에서 반환되었거나 예를 들어 사용자 입력을 수집하는 데 사용되었을 수 있습니다. 목록에서 항목을 찾아서 제거해야 합니다. 목록에 있는지는 알지만, 목록에 있는지는 모릅니다. 먼저 목록에 있는지 쿼리를 실행하고 싶습니다. 그런 다음 목록에 있으면 제거할 수 있도록 합니다. 따라서 John 항목의 위치를 저장하는 변수를 만들 것입니다. 이 변수를 pos라고 부르겠습니다. 그리고 여기에 contains 함수의 결과를 할당합니다. 문자열과 함께 contains를 살펴보았습니다. 이제 목록과 함께 contains를 실행합니다. 목록에서 문자열 John을 찾고 있으며 물론 대소문자를 구분합니다. 그리고 그 줄을 실행하면 반환되어 pos 변수에 저장되는 결과는 다음과 같습니다.그리고 예를 들어 목록에서 해당 항목을 제거하려면 계속해서 열린 괄호에서 remove를 입력하면 됩니다.우리는 내 목록을 보고 있습니다.그리고 첫 번째 인수 뒤에 아무것도 제공하지 않으면 마지막 항목만 제거하는 대신 pos 변수를 사용하려고 합니다.그리고 그 줄을 실행합니다.그러면 제거된 요소의 개수만큼 목록이 반환됩니다.기본적으로 두 번째 인수에 지정된 위치에서 하나를 가져옵니다.그러면 해당 문자열이 있는 목록을 얻습니다.그리고 스크립트의 다른 곳에서 목록의 해당 요소를 사용하려면 실제로 해당 결과를 자체 변수에 할당할 수 있습니다.그리고 반환된 목록에서 추출하려면 여기에 첨자를 사용하여 추출할 수도 있습니다.그러니까 지금은 내 목록에 더 이상 John이 포함되지 않습니다.나는 내 줄을 다시 실행할 것입니다.pos에 저장된 값은 여전히 동일합니다. 그리고 줄 And를 실행해서 목록에 없는 문자열을 반환하겠습니다. 목록 위로 마우스를 가져가면 이전 값으로 돌아간 것을 볼 수 있습니다. 행렬에 대해 조금 이야기해 보겠습니다. 로그를 마우스 오른쪽 버튼으로 클릭하여 지우고 스크립트 편집기 창에서 모든 항목을 선택하여 삭제합니다. 먼저 행렬의 행이 될 사람을 시뮬레이션하겠습니다. 각 사람은 주사위를 다섯 번 굴립니다. 육면체 주사위입니다. 이것이 열이 됩니다. 난수 생성기를 사용하여 이를 생성하지만 특정 시드 값으로 시작하여 따라가면 정확히 동일한 난수를 얻을 수 있도록 합니다. 지정된 수의 행과 열을 가진 행렬을 만드는 j 함수라는 함수를 사용합니다. 이것이 처음 두 인수이고 행렬의 값이 될 것은 세 번째 인수입니다. 그래서 저는 값을 And로 하여 random reset 함수를 사용할 것입니다. 다시 한번 말씀드리지만, 이는 난수 생성기의 시작 시드를 지정하는 것입니다. 따라서 이 함수를 실행해 보겠습니다. 그리고 새 줄에 j 함수의 결과가 할당될 변수 m을 만듭니다. 다시 한번 말씀드리지만, 사람을 시뮬레이션할 행의 개수로 시작하고, 그 다음에는 육면체 주사위를 다섯 번 굴릴 때의 열의 개수로 시작합니다. 그리고 인수를 사용하여 random 정수 함수를 사용할 것입니다. 에서 시작하여 최대 And까지의 난수를 선택합니다. 다시 한번 말씀드리지만, 조금 더 보기 좋게 다시 포맷할 수 있습니다. 아, 포맷하지 않고 실행했군요. 여전히 포맷할 수 있습니다. 자, 이제 실행해 보겠습니다. 로그를 조금 더 크게 만들면 행 단위 행렬이 있는 것을 볼 수 있습니다. 이 행렬의 요소를 어떻게 참조할까요? 첨자를 사용합니다. 새 줄로 넘어가겠습니다. 영어: 아마도 다섯 번째 사람이 주사위를 세 번째 굴렸을 때 무엇을 굴렸는지 궁금할 겁니다.그래서 변수 이름 m에 아래 첨자를 붙일 겁니다.m, 행 번호는 대괄호, 열 번호는 쉼표, 대괄호를 닫고 해당 줄을 실행합니다.그리고 다섯 번째 사람은 세 번째 굴림에서 a를 굴렸습니다.그리고 우리는 실제로 그것을 확인할 수 있습니다.그러면 1, 2, 3, 4가 있고 다섯 번째 행과 세 번째 주사위 굴림이 있습니다.이제 전체 행이나 전체 열을 찾고 싶다면 어떻게 해야 할까요?음, 여기 새 줄에--사실, 같은 줄을 사용하고 내 줄의 아래 첨자를 바꾸겠습니다.모든 행을 원한다고 가정해 보겠습니다.그러면 첫 번째 아래 첨자로 를 입력합니다.그런 다음 쉼표 뒤에 특정 열을 선택하지 않도록 나타내는 a를 입력합니다.이것은 모든 열의 행이 될 것입니다.그리고 실행할 수 있습니다.그러면 모든 값이 row에 표시됩니다. 그리고 위로 스크롤하여 해당 행의 값인지 확인할 수 있습니다.사실, 이것이 반환하는 것입니다.같은 작업을 수행하여 행 첨자로 a만 있고 그 다음에 열 번호가 있는 열을 선택할 수 있습니다.하지만 전체 행을 제거하고 싶다고 가정해 보겠습니다.세 번째 사람이 주사위를 굴리는 것을 어떻게든 속였다고 판단했다고 가정해 보겠습니다.그러므로 a와 a로 m에 첨자를 붙일 것입니다.그런 다음 세미콜론 앞에 해당 행에 빈 행렬의 값을 할당합니다.그러므로 대괄호를 열고 닫습니다.그리고 해당 줄을 실행하면 로그에 반환되는 것은 빈 행렬입니다.그리고 m 위에 마우스를 올려놓고 행을 세어 보면 이제 9개의 행만 있는 것을 볼 수 있습니다.이제 행렬로 할 수 있는 몇 가지 작업을 가지고 놀아 보겠습니다.남은 9명이 각자 주사위를 여섯 번째로 던진다고 가정해 보겠습니다.그러므로 제자리에서 이 작업을 수행하겠습니다.연산자는 m입니다. 그리고 할당 연산자는 Concat입니다. 즉, 이중 수직 막대와 등호입니다. 공백은 사용할 수 없습니다. 이러한 연산자의 구성 요소 사이에 여러 문자가 있을 수 없기 때문입니다. 그리고 j 함수를 다시 사용하겠습니다. 행은 9개뿐입니다. 열은 1개입니다. 다시 난수를 사용하겠습니다. 인수로는 여전히 6면체 주사위이므로 다음을 제공하겠습니다. 이렇게 하면 해당 줄을 실행할 때 여섯 번째 열을 추가하여 m이 수정됩니다. 이제 행렬에 열이 6개 있는 것을 볼 수 있습니다. 로그를 지우겠습니다. m에 값을 할당하는 것으로 다시 시작하겠습니다. 더 이상 난수를 사용하지 않겠습니다. 따라서 스크립트 편집기 창의 내용을 지웁니다. 카운터 변수 i를 초기화하고 값을 할당합니다. 따라서 초기화하기 위해 실행합니다. 그런 다음 새 줄에서 m에 다른 행렬을 할당합니다. 따라서 m에는 j 함수의 결과가 할당됩니다. 행이 5개입니다. 이 행렬은 5개의 행과 5개의 열을 가지며, 행렬의 모든 요소에 대해 원하는 대로 i만큼 증가합니다. 따라서 i 더하기 더하기, 즉 제자리에서 더하는 사후 증가 연산자를 사용하겠습니다. 계속해서 실행해 보겠습니다. 그러면 by 행렬이 있습니다. 행 방향으로 증가시키는 것이지 열 방향으로 증가시키는 것이 아니라는 점에 유의하세요. 이는 앞으로 살펴볼 다른 첨자화 방법에 중요합니다. 따라서 행 방향으로 증가합니다. 이제 실제로 최대값까지 증가하는 시퀀스가 필요한 경우는 어떻게 될까요? 물론 이를 수행하는 방법은 여러 가지가 있습니다. 하지만 빠른 방법은 방금 만든 행렬의 모든 요소에 m을 곱하는 것입니다. 그리고 다시 한번, 이러한 연산을 벡터화할 수 있습니다. 행렬을 반복할 필요는 없습니다. 그냥 할당합니다. 그리고 또 다른 제자리 할당을 할 것입니다. m과 별표가 같으므로 곱합니다. 제자리에서 할 필요는 없습니다. 하지만 새 변수를 만드는 대신 그렇게 하겠습니다. 다시 한번, 반복할 필요는 없습니다. 요소별로 모든 것을 곱하고 실행합니다.그러면 에서 로 증분되는 행렬이 있습니다.이제 이 행렬을 만드는 또 다른 방법은 index 함수부터 시작하여 두 단계로 진행하는 것입니다.스크립트 편집기 창에 있는 내용을 지우겠습니다.로그도 지우겠습니다.스크립트 편집기 창에서 m을 입력합니다.그러면 index 함수의 결과인 index 괄호가 할당됩니다.그리고 에서 시작합니다.까지 세겠습니다.선택적인 세 번째 인수는 여기서 증분입니다.그러면 다음으로 넘어갑니다.여기 행렬을 만드는 첫 번째 단계는 by 행렬입니다.index 함수를 사용하여 행 벡터를 만듭니다.그런 다음 이것을 모양화할 수 있습니다.그러니 새 줄로 이동하겠습니다.m을 다시 덮어쓸 것입니다.그러면 m은 모양 함수의 결과가 되는데, 이 함수는 m을 첫 번째 인수로 사용하고 차원을 변경하여 행 5개와 열 5개를 갖습니다. 이 모양 함수를 사용할 때는 매우 주의해야 합니다. 이 경우 행 벡터가 여기에 지정한 정사각 행렬과 일치하지 않으면 JMP는 모양 함수로 지정한 행렬이 너무 작으면 이 벡터를 자릅니다. 또는 더 큰 행렬을 지정하면 벡터를 반복하기 시작합니다. 따라서 모양 함수를 사용할 때는 주의해야 합니다. 그래서 이 함수를 실행하려고 합니다. 그리고 다시 정사각 행렬이 있는데, 에서 로 증분됩니다. 이제 제가 이렇게 하고 싶었던 이유 중 하나는 JMP에서 일반적으로 모든 작업을 수행하는 방법이 많다는 사실 외에도 다른 첨자 사용 방법에 대해 이야기하기 위해서입니다. 행별 열 첨자 사용은 이미 살펴보았습니다. 그리고 가끔 보게 될 단일 첨자에 대해 이야기하고 싶습니다. 그래서 제가 원한다면, contains 함수를 문자열에 사용할 수 있습니다. 목록에 사용할 수 있습니다. 행렬에 사용할 수 있습니다. 현재 m이 저장된 행렬에서 숫자의 위치를 찾고 싶다면, 글쎄요, 그걸 설명하려면 "행 열입니다."라고 말할 겁니다. 그래서 쉼표 아래 첨자를 사용할 겁니다. 하지만 JMP에 그걸 찾아달라고 요청한다면-- 그냥 포함을 사용할 겁니다. 그리고 다시 말하지만, 실제로 스크립트는 이 결과를 변수에 할당할 겁니다. 여기서는 그럴 필요가 없습니다. 포함을 한 다음 m 쉼표를 사용하면 JMP는 결과를 제공하지 않습니다. 단일 값을 제공합니다. 그럼 이 단일 값은 어떻게 작동할까요? 단일 값 아래 첨자는-- 다시 돌아와서-- 여기서 새 줄로 가서 m을 입력한 다음 단일 값 아래 첨자가 있는 대괄호를 입력하고 실행합니다. 단일 값 아래 첨자는 행렬을 행 벡터처럼 취급하고 첫 번째 위치에서부터 계산을 시작합니다. 그래서 로그로 돌아가서 인덱스 함수의 결과를 볼 때, 단일 서브스크립트는 그것을 행 벡터로 취급하고 행 방향으로 증가시킨 것처럼 행 방향으로 계산하여 해당 값의 위치를 구합니다.그리고 나중에 JMP에서 행렬을 작업할 때 다른 예제를 살펴보겠습니다.이제 마지막으로 행렬을 인수로 사용할 수 있는 함수, 계산 함수가 있다는 것을 보여주기 위해 임의의 계산을 합니다.그래서 이미 모양 함수와 포함을 보았습니다.하지만 여기서 새 줄로 넘어가서 log를 입력하고 m을 인수로 나누고 이 예제에 대한 다른 점은, 음, 실행해 보겠습니다.그리고 예제에 대한 다른 점을 말씀드리겠습니다.그래서 모든 요소에 대해 계산을 수행하고 나누었습니다.하지만 제가 언급하고 싶은 또 다른 점은 JSL에서 함수는 함수를 인수로 사용할 수 있다는 것입니다.이것은 전반적으로 살펴보겠습니다.이미 몇 가지 예를 보았습니다. 따라서 이 나누기 연산자는 실제로 m의 로그를 인수로 취하는 나누기 함수입니다.그리고 m의 로그를 계산하고 나누기 함수에 제공하기 위해 변수에 저장할 필요가 없습니다.직접 계산할 수 있습니다.그리고 다시, 함수를 작성하면 다음과 같습니다.나누기 열린 괄호입니다.연산자를 쉼표와 닫는 괄호로 바꾸세요.그러면 이러한 값을 저장하는 변수를 제공할 필요가 없습니다.나누기 함수를 실행하는 동안 계산할 수 있습니다.그래서 목록과 행렬의 몇 가지 예와 이러한 특정 유형의 데이터 구조를 사용할 수 있는 몇 가지 방법입니다.