白炽灯$map的使用一些说明

白炽灯$map的使用一些说明,map,clojure,incanter,Map,Clojure,Incanter,假设白炽灯数据集freqs包含k列整数。我想通过将每个列的值除以一个固定值,比如20,将其中的2列转换为0到1之间的值。我可以使用$map函数为1列执行此操作:($map(fn[x](/x20)):fq1 freqs)。$map上的白炽灯文档似乎建议可以使用列向量:“…将给定函数映射到给定列键的值上…”。 但是,我尝试这样做($map(fn[x](/x20))[:fq1:fq2]freqs)会给出“错误的参数数”区域。我理解这个错误。希望有人能肯定地说,列键向量的使用是否可以与$map一起使用;

假设白炽灯数据集freqs包含k列整数。我想通过将每个列的值除以一个固定值,比如20,将其中的2列转换为0到1之间的值。我可以使用$map函数为1列执行此操作:($map(fn[x](/x20)):fq1 freqs)。$map上的白炽灯文档似乎建议可以使用列向量:“…将给定函数映射到给定列键的值上…”。 但是,我尝试这样做($map(fn[x](/x20))[:fq1:fq2]freqs)会给出“错误的参数数”区域。我理解这个错误。希望有人能肯定地说,列键向量的使用是否可以与$map一起使用;如果是,举个例子会很有帮助。

的白炽灯文档显示,您可以将列的向量传递给$map,因此您的代码变成:

($map (fn [f1 f2] (do-something-with f1 f2) [:fq1 :fq2] freqs) 
注意:当您映射2列时,函数应采用2个参数,参数的错误数量也不是因为您调用$map的方式,而是您传递的函数仅采用一个参数。

的白炽灯文档显示您可以将列向量传递给$map,因此您的代码变为:

($map (fn [f1 f2] (do-something-with f1 f2) [:fq1 :fq2] freqs) 

注意:当您在两列上映射时,函数应采用两个参数,而且错误的参数数不是因为您调用$map的方式,而是您传递的函数只采用了一个参数。

谢谢您的回复。我应该更好地解释我的困境。使用2 arg函数和示例,我必须尝试以下操作:(fn[f1 f2](do(/f1 20)(/f2 20))[:fq1:fq2]freqs,它只返回一个修改过的:fq2列。我的问题更一般,因为我还需要根据数据列的数量对2、3、4或更多列进行/运算。。(fn[f1 f2][(/f1 20)(/f2 20)])感谢您对我的语法的澄清;非常感谢。希望白炽灯文档多年来有所改进。谢谢您的回复。我应该更好地解释我的困境。使用2 arg函数和示例,我必须尝试以下操作:(fn[f1 f2](do(/f1 20)(/f2 20))[:fq1:fq2]freqs,它只返回一个修改过的:fq2列。我的问题更一般,因为我还需要根据数据列的数量对2、3、4或更多列进行/运算。。(fn[f1 f2][(/f1 20)(/f2 20)])感谢您对我的语法的澄清;非常感谢。希望白炽灯文档经过几年的改进。