チャレンジ 5
行列の操作は便利かつ高速です。 単一の値に作用する多くの関数は、行列全体にも適用できます。 さらに、次のような機能もV マックス、 V 平均、V分位数行列の関数 (このような状況では列) に適用できます。 今月のチャレンジは、これを次のレベルに引き上げることを目的としています。 この機能を JSL では利用できない関数に拡張し、行列とリストの両方に対して実行することを検討します。
- という名前の関数を書きます狂ったこれはベクトルを入力として受け取り、絶対偏差の中央値 (データの中央値からの絶対差の中央値) を返します。 例えば、狂った([1,2,3,1000]) は 1 を返します。 観測値が偶数の場合は、中央の平均値を取得して中央値を計算します。
- 関数を書くトリミング平均(ベックイン、 pctLo 、 pctこんにちは) ベクトル (ベックイン)、および以下の観測値のパーセントに対応する 0 ~ 0.5 の値 ( pctLo ) 以上 ( pctこんにちは) 平均値が計算される前に削除される平均値。 トリミングされた値のパーセントは、入力パーセントを超えない最大の数値である必要があります。
- 関数を書くリストに含まれるもの(リストイン、値文字列) 文字列のリストを受け取ります (リストイン) と文字列 (値文字列) を返し、行列の各要素が の開始位置に対応する行列値のリストを返します。値文字列の中にjの項目リストイン(つまり、の項目リストイン含有することができます値文字列一回以上)。 項目に文字列が含まれていない場合は、欠損値を返します。
- 関数を書くapply関数(リストイン、ふん、引数リスト) 入力リスト (リストイン) そして関数を適用しますふん引数付き引数リストそれに。 リストには数値または文字列のみが含まれると想定します。 この関数は、組み込み関数とユーザー指定関数の両方で機能する必要があります。 入力関数に応じて、単一の値、行列、または値のリストを返すことができます。 簡単にするために、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,.] が返されます。
- のためにapply関数、 両方リストインそして引数リストの引数ですふん。 主な違いは、リストイン決して空にはなりませんが、引数リスト空いている可能性があります。 たとえば、次の場合リストイン= {"ABCD","DEFG","GHIJ"} およびふん=含まれています、 それから引数リストは、検索対象の部分文字列を少なくとも 1 つ含むリストである必要があります。 もしふん=長さ、 しかし、引数リスト空だろう。 場合ふん個々の要素に適用できる場合は、そうしてください。 たとえば、次の場合ふん=シャア、引用符で囲まれたリストを返すのではなく、リストの個々の要素を引用します。
これで物事がより明確になることを願っています。 そうでない場合はお知らせください。

今月のチャレンジはメタになります。
JMPブログRe: チャレンジ 5皆さんごめんなさい。 私にとっては本当に忙しく、この挑戦は予想していたよりも難しいものでした。 執筆はほぼ完了しており、週末までに何かができるはずです。 その後すぐに新しい挑戦ができることを願っています。
Re: チャレンジ 5これに関して何かニュースはありますか?
Re: チャレンジ 5ありがとう!
Re: チャレンジ 5@David_Burnham私は2番目を想定していました。
Re: チャレンジ 5最後にもう 1 つ質問する時間です。ArgList - 引数のリストまたは実際の JMP リストです。
applyFunction(inList,fn,a,b,c,flag)
または
applyFunction(inList,fn,{a,b,c},flag)
連絡がなかったら、どちらかの可能性があると思います。
Re: チャレンジ 5問題はありません! これは、これを実行しようとする際の問題を解明するのに役立ちます。 applyFunction の最後の引数としてフラグを追加して、リストごとに適用するか要素ごとに適用するかを示します。
apply関数(リスト内、ふん、引数リスト、フラグ)
Re: チャレンジ 5それは完全に明らかであり、私はそれらの仮定に喜んで取り組んでいます。
しかし (申し訳ありませんが)、私はすぐに逆のシナリオを思いつきます。それは、JMP 関数です。項目と内容を連結する個々の要素ではなくリスト全体を処理します。そして、私が望んでいるのに対し、和リスト全体に適用するには、ラウンド要素に適用します。(関数がリスト レベルで動作するか、個々の要素のレベルで動作するかを示すフラグ パラメータはできないでしょうか)。
何度も申し訳ありませんが、苦痛を感じているようです。
Re: チャレンジ 5ありがとうデイビッド、
次の仮定を使用してみましょう。
- ふんは文字列です。
- リストインは、完全に数値または完全に文字列で構成されるリストです。 数字の場合は、ふんは入力値のベクトル全体に対して演算を実行します。 文字の場合、個々の要素に対して操作が実行されます。
- 引数が現れる順序引数リストで使用されるのと同じ順序ですふん。
これで状況が少し明確になると思います。 そうでない場合は、もう一度お知らせください。
Re: チャレンジ 5ドンさん、ご説明ありがとうございます。applyFunction の場合、ふん文字列として表現されるのか?もしふん任意の関数を指定できますが、それが個々の要素に適用できるかどうかをどのように確認すればよいでしょうか? - applyFunction は関数名を入力パラメーターとして認識するだけで、その関数が何を実行できるのかを知りません。で、もしリストインが数値のリストである場合、リスト全体を合計するのが合理的ですが、各項目がリストである場合もあり、その場合は合計のリストを返すことが合理的です。