도전과제 5
행렬 작업은 편리하고 빠릅니다. 단일 값에 대해 작동하는 많은 함수를 전체 행렬에 적용할 수도 있습니다. 그 밖에도 다음과 같은 기능이 있습니다. V 맥스 , V 평균 , 그리고 V 분위수 행렬의 함수(이러한 상황에서는 열)에 적용될 수 있습니다. 이번 달의 챌린지는 이를 다음 단계로 끌어올리는 것을 목표로 합니다. 우리는 이 기능을 JSL에서 사용할 수 없는 함수로 확장하고 행렬과 목록 모두에 대해 수행하려고 합니다.
- 이름이 붙은 함수를 작성하세요. 미친 벡터를 입력으로 사용하고 중앙값 절대 편차(데이터 중앙값과의 절대 차이의 중앙값)를 반환합니다. 예를 들어, 미친 ([1,2,3,1000])은 1을 반환합니다. 관측치가 짝수인 경우 중앙의 평균값을 취하여 중앙값을 계산합니다.
- 함수 작성 잘린평균 ( 베인 , pctLo , pct안녕하세요 )는 벡터( 베인 ) 및 아래 관측치의 백분율에 해당하는 0에서 0.5 사이의 값( pctLo ) 이상 ( pct안녕하세요 ) 평균이 계산되기 전에 제거된 평균입니다. 잘린 값의 백분율은 입력된 백분율을 초과하지 않는 가장 큰 숫자여야 합니다.
- 함수 작성 목록다음을 포함함 ( 목록에서 , 값 문자열 )는 문자열 목록( 목록에서 ) 및 문자열( 값 문자열 ) 그리고 행렬의 각 요소가 다음의 시작 위치에 해당하는 행렬 값 목록을 반환합니다. 값 문자열 에서 제이 번째 항목 목록에서 (즉, 항목 목록에서 포함하고있을 것이다 값 문자열 한 번 이상). 항목에 문자열이 포함되어 있지 않으면 누락된 값을 반환합니다.
- 함수 작성 적용함수 ( 목록에서 , fn , 인수 목록 )는 입력 목록( 목록에서 ) 기능을 적용합니다. fn 인수가 있는 인수 목록 그것에. 목록에 숫자나 문자열만 포함된다고 가정합니다. 이 함수는 내장 함수와 사용자 제공 함수 모두에서 작동해야 합니다. 입력 함수에 따라 단일 값, 행렬 또는 값 목록을 반환할 수 있습니다. 단순화를 위해 applyFunction에 제공된 모든 함수는 문자, 문자열, 숫자, 행렬 또는 목록(문자, 문자열, 숫자, 행렬 또는 목록 항목으로 제한됨)에서만 작동해야 한다고 가정합니다.
점수: 1, 2번 항목은 2점, 3, 4번 항목은 6점입니다. 루프(어떤 종류든)나 데이터 테이블을 사용하지 않고 항목 3 또는 4를 쓸 수 있으면 4점을 추가로 얻을 수 있습니다.
응모 마감일은 8월 17일 월요일 오후 11시 59분 미국 동부 시간 .
2020년 8월 11일: 챌린지의 몇 가지 측면에 대해 약간의 혼란이 있었습니다. 문제를 해결할 수 있는지 살펴보겠습니다.
- 을 위한 잘린평균 , pctLo 그리고 pct안녕하세요 분수 값은 0 이하로 제한되고 0.5 이상으로 제한됩니다. 예를 들어, pctLo = 0.23이면 아래쪽 꼬리 값의 23%가 제거됩니다.
- 을 위한 목록다음을 포함함 , 만약에 목록에서 = {"ABCD","DEFG", "GHIJ"} 및 값 문자열 = "D"이면 [4,1,.]이 반환됩니다.
- 을 위한 적용함수 , 둘 다 목록에서 그리고 인수 목록 에 대한 주장이다 fn . 주요 차이점은 목록에서 결코 비어있지는 않겠지만 인수 목록 비어 있을 수 있습니다. 예를 들어, 목록에서 = {"ABCD","DEFG","GHIJ"} 및 fn = 포함 , 그 다음에 인수 목록 검색할 하위 문자열이 하나 이상 포함된 목록이어야 합니다. 만약에 fn = 길이 , 하지만, 인수 목록 비어있을 것입니다. 다음과 같은 경우 fn 개별 요소에 적용할 수 있으면 그렇게 하세요. 예를 들어, 만약 fn = 숯 , 인용된 목록을 반환하는 대신 목록의 개별 요소를 인용하세요.
이것이 상황을 더 명확하게 해주기를 바랍니다. 그렇지 않다면 알려주세요.

이번 달의 챌린지는 메타입니다.
JMP 블로그답: 챌린지 5죄송합니다 여러분. 나에게는 일이 정말 바빴고 이번 도전은 내가 예상했던 것보다 더 까다로운 것으로 판명되었습니다. 나는 글쓰기를 거의 마쳤고 이번 주말까지 뭔가를 해야 할 것입니다. 그 이후에는 새로운 도전이 이루어지길 바랍니다.
답: 챌린지 5이에 대한 소식이 있나요?
답: 챌린지 5감사해요!
답: 챌린지 5@David_Burnham 나는 2위를 가정하고 있었다.
답: 챌린지 5이제 마지막 질문 하나를 던져볼 시간입니다.ArgList - 인수 목록 또는 실제 JMP 목록입니다.
applyFunction(inList,fn,a,b,c,flag)
또는
applyFunction(inList,fn,{a,b,c},flag)
내가 당신의 소식을 듣지 못한다면 둘 중 하나일 수 있다고 가정하겠습니다!
답: 챌린지 5아무 문제 없습니다! 이는 이 작업을 수행할 때 발생하는 문제를 명확히 하는 데 도움이 됩니다. ApplyFunction의 마지막 인수로 플래그를 추가하여 목록별로 적용해야 하는지 요소별로 적용해야 하는지 표시해 보겠습니다.
적용함수 ( 목록에 있음 , fn , 인수 목록 , 깃발 )
답: 챌린지 5이는 매우 명확하며 저는 이러한 가정을 바탕으로 작업하게 되어 기쁩니다.
하지만 (죄송합니다!) 저는 즉시 반대 시나리오를 떠올릴 수 있습니다. 바로 JMP 함수입니다. 항목 및 포함 연결 개별 요소가 아닌 전체 목록을 처리합니다.그리고 나는 원하지만 합집합 전체 목록에 적용하려면 둥근 요소에 적용합니다.(함수가 목록 수준에서 작동하는지 아니면 개별 요소 수준에서 작동하는지를 나타내는 플래그 매개변수가 없을 수 있나요?)
다시 한번 죄송합니다. 제가 괴로움을 겪고 있는 것 같습니다.
답: 챌린지 5고마워요 데이빗,
다음 가정을 사용해 보겠습니다.
- fn 문자열입니다.
- 목록에서 전체가 숫자 또는 전체 문자열로 구성된 목록입니다. 숫자라면, fn 입력 값의 전체 벡터에 대해 작업을 수행합니다. 문자인 경우 개별 요소에 대한 작업을 수행합니다.
- 인수가 나타나는 순서 인수 목록 에서 사용되는 순서와 동일합니다. fn .
바라건대 상황이 좀 더 명확해지기를 바랍니다. 그렇지 않다면 다시 알려주세요.
답: 챌린지 5설명해주셔서 감사합니다.ApplyFunction의 경우 fn 문자열로 표현되나요?만약에 fn 어떤 기능이든 가능합니다. 개별 요소에 적용할 수 있는지 여부를 어떻게 알 수 있나요? - applyFunction은 함수 이름을 입력 매개변수로 볼 뿐이며 함수가 무엇을 할 수 있는지 전혀 모릅니다.그리고 만약에 리스트인 숫자 목록인 경우 전체 목록을 합산하는 것이 합리적이지만, 각 항목이 목록일 수도 있으며 이 경우 합계 목록을 반환하는 것이 합리적일 수 있습니다.