挑战5
使用矩阵既方便又快捷。 许多作用于单个值的函数也可以应用于整个矩阵。 此外,还有诸如最大电压, V 平均值,和V分位数可以应用于矩阵的函数(在这些情况下为列)。 本月的挑战旨在将其提升到一个新的水平。 我们将寻求将此功能扩展到 JSL 中不可用的函数,并针对矩阵和列表执行此操作。
- 编写一个名为疯狂的以向量作为输入并返回中值绝对偏差(与数据中值的绝对差值的中值)。 例如,疯狂的([1,2,3,1000]) 返回 1。 如果有偶数个观测值,则取中间的平均值来计算中位数。
- 写一个函数修剪均值(向量,百分率,聚氯乙烯) 需要一个向量 (向量) 和 0 到 0.5 之间的值对应于以下观察值的百分比 (百分率) 以上 (聚氯乙烯) 在计算平均值之前删除的平均值。 修剪值的百分比应该是不超过输入百分比的最大数字。
- 写一个函数列表包含(列表输入,值字符串) 接受一个字符串列表 (列表输入) 和一个字符串 (值字符串)并返回一个矩阵值列表,其中矩阵的每个元素对应于的起始位置值字符串在里面j第一项列表输入(即,一个项目列表输入可能含有值字符串不止一次)。 如果项目不包含字符串,则返回缺失值。
- 写一个函数应用函数(列表输入,号,参数列表) 接受一个输入列表 (列表输入) 并应用该函数号有参数参数列表到它。 假设列表仅包含数字或字符串。 该函数应该适用于内置函数和用户提供的函数。 它可以返回单个值、矩阵或值列表,具体取决于输入函数。 为简单起见,假设提供给 applyFunction 的任何函数仅需要对字符、字符串、数字、矩阵或列表进行操作(仅限于字符、字符串、数字、矩阵或列表项)。
评分:第 1 项和第 2 项得 2 分,第 3 项和第 4 项得 6 分。 如果您可以在不使用循环(任何类型)或数据表的情况下编写第 3 项或第 4 项,则可加四分。
报名截止日期为美国东部时间 8 月 17 日星期一晚上 11:59 。
2020 年 8 月 11 日:对于挑战的几个方面存在一些混乱。 让我看看是否可以解决问题:
- 为了修剪均值,百分率和聚氯乙烯是以下范围为 0 且以上范围为 0.5 的分数值。 例如,如果百分率= 0.23,则删除下尾部 23% 的值。
- 为了列表包含, 如果列表输入= {“ABCD”,“DEFG”,“GHIJ”} 和值字符串= "D",则返回 [4,1,.]。
- 为了应用函数, 两个都列表输入和参数列表是论据号。 主要区别在于列表输入永远不会为空,但是参数列表可能为空。 例如,如果列表输入= {"ABCD","DEFG","GHIJ"} 和号=包含, 然后参数列表应该是一个至少包含一个要搜索的子字符串的列表。 如果号=长度, 然而,参数列表会是空的。 在以下情况下号可以应用于各个元素,这样做。 例如,如果号=查尔,而不是返回引用的列表,而是引用列表的各个元素。
希望这能让事情变得更清楚。 如果没有,请告诉我。

本月的挑战变得更加复杂。
JMP 博客回复:挑战 5对不起大家。 事情对我来说真的很忙,而且这个挑战比我预想的要棘手。 我快要写完了,本周末应该会有一些东西。 希望不久之后会出现新的挑战。
回复:挑战 5有这方面的消息吗?
回复:挑战 5谢谢!
回复:挑战 5@大卫_伯纳姆我假设是第二个。
回复:挑战 5也许是时候问最后一个问题了。ArgList - 是参数列表或实际的 JMP 列表:
applyFunction(inList,fn,a,b,c,flag)
或者
applyFunction(inList,fn,{a,b,c},flag)
如果我没有收到你的消息,我会认为也可能是这样!
回复:挑战 5没问题! 这有助于阐明尝试执行此操作时遇到的问题。 让我们添加一个标志作为 applyFunction 的最后一个参数,以指示它是应该按列表应用还是按元素应用。
应用函数(列表中,号,参数列表,旗帜)
回复:挑战 5这是非常清楚的,我很乐意接受这些假设。
但是(抱歉!)我可以立即想到一个反方案:JMP 函数连接项目和包含处理整个列表而不是单个元素。虽然我想要和要应用于整个列表,我想要圆形的应用于元素。(我们是否可以没有一个标志参数来指示函数是在列表级别还是在单个元素级别操作)。
再次抱歉,我觉得我很痛苦。
回复:挑战 5谢谢大卫,
让我们使用以下假设:
- 号是一个字符串。
- 列表输入是一个完全由数字或完全由字符串组成的列表。 如果是数字的话,号将在整个输入值向量上执行其操作。 如果是字符,它将对各个元素执行操作。
- 参数出现的顺序参数列表与使用的顺序相同号。
希望这能让事情变得清楚一些。 再次强调,如果没有,请告诉我。
回复:挑战 5感谢唐的澄清。对于 applyFunction 来说,是号表示为字符串?如果号可以是任何函数,我们如何知道它是否可以应用于单个元素? - applyFunction 只是将函数名称视为输入参数,它不知道该函数能够做什么?而如果列表输入是一个数字列表,那么对整个列表求和是有意义的,但或者每个项目可能是一个列表,在这种情况下,返回总和列表可能是有意义的。