如此处所述,在javascript a.push.apply(a, b)数组b附加到数组a的快速方法是a.push.apply(a, b) 。 你会注意到对象a被使用了两次。 真的,我们只是想要push函数,而b.push.apply(a, b)完成了完全相同的事情 – apply的第一个参数为应用函数提供了this参数。 我认为直接使用Array对象的方法可能更有意义: Array.push.apply(a, b) 。 但是这不行! 我很好奇,为什么不,以及是否有更好的方法来实现我的目标。 (应用pushfunction,而不需要两次调用特定的数组。
我想知道在R中是否有一个内置函数将函数应用到matrix的每个元素(当然,函数应该根据matrix索引来计算)。 相当于这样的东西: matrix_apply <- function(m, f) { m2 <- m for (r in seq(nrow(m2))) for (c in seq(ncol(m2))) m2[[r, c]] <- f(r, c) return(m2) } 如果没有这样的内置函数,初始化matrix以包含通过计算具有matrix索引作为参数的任意函数获得的值的最佳方法是什么?
看起来很简单,我想用参数数组来调用一个函数。 当然,我可以说func.apply(this, ['some', 'arguments']); 但是这会改变this func的价值。 任何想法如何做到这一点而不改变它?
我想要在数据框上使用apply函数,但是只将函数应用到最后5列。 B<- by(wifi,(wifi$Room),FUN=function(y){apply(y, 2, A)}) 这将A应用于y的所有列 B<- by(wifi,(wifi$Room),FUN=function(y){apply(y[4:9], 2, A)}) 这只适用于A的第4-9列,但B条从前3列的总回报…我仍然希望这些,我只是不希望A适用于他们。 wifi[,1:3]+B 也不会做我想要的/想要的。
我想应用一个函数的参数在Pythonpandas系列: x = my_series.apply(my_function, more_arguments_1) y = my_series.apply(my_function, more_arguments_2) … 该文档描述了对apply方法的支持,但不接受任何参数。 有不同的方法可以接受参数吗? 另外,我错过了一个简单的解决方法? 更新(2017年10月):请注意,由于这个问题最初被要求pandas apply()已被更新以处理位置和关键字参数,上面的文档链接现在反映了这一点,并显示了如何包含任一types的参数。
我知道R中的循环很慢,我应该尝试以vector化的方式来做事情。 但为什么? 为什么循环速度慢, apply速度快? apply调用几个子function – 这似乎并不快。 更新:我很抱歉,这个问题是不合适的。 我把vector化和apply混淆了。 我的问题应该是,“为什么vector化速度更快?”
我看到,在不同的插件和代码,但我不明白这个function是什么…在jQuery API没有被引用!
所以我们习惯于对每个R新用户说“ apply不是vector化的,查看Patrick Burns R Inferno Circle 4 ”(我引用): 一个常见的反应是在应用系列中使用一个函数。 这不是 vector化,而是循环隐藏 。 apply函数在其定义中有一个for循环。 lapply函数隐藏循环,但执行时间往往大致等于明确的for循环。 实际上,快速查看apply源代码揭示了循环: grep("for", capture.output(getAnywhere("apply")), value = TRUE) ## [1] " for (i in 1L:d2) {" " else for (i in 1L:d2) {" 那么到目前为止,但看一下lapply或vapply实际上揭示了一个完全不同的画面: lapply ## function (X, FUN, …) ## { ## FUN <- match.fun(FUN) ## if (!is.vector(X) || is.object(X)) ## X […]
在使用多列与下面的数据框时,pandas应用函数有一些问题 df = DataFrame ({'a' : np.random.randn(6), 'b' : ['foo', 'bar'] * 3, 'c' : np.random.randn(6)}) 和以下function def my_test(a, b): return a % b 当我尝试应用这个function: df['Value'] = df.apply(lambda row: my_test(row[a], row[c]), axis=1) 我收到错误消息: NameError: ("global name 'a' is not defined", u'occurred at index 0') 我不明白这个消息,我正确定义了这个名字。 我非常感谢在这个问题上的任何帮助 更新 谢谢你的帮助。 我确实在代码中犯了一些语法错误,索引应该放在''。 不过,我仍然使用一个更复杂的function相同的问题,如: def my_test(a): cum_diff = 0 […]
Math.max.apply()如何工作? <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>JS Bin</title> </head> <body> <script> var list = ["12","23","100","34","56", "9","233"]; console.log(Math.max.apply(Math,list)); </script> </body> </html> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max 上面的代码查找列表中的最大数量。 谁能告诉我下面的代码是如何工作的? 这似乎工作,如果我传递null or Math. console.log(Math.max.apply(Math,list)); 所有的user-defined/Native functions都有调用和应用方法,我们可以使用?