R语言如何实现返回节点向量对应乘积关于x的可调用函数
问题原因
你原有的代码会在调用prod_x时直接执行prod(x - nodes)计算结果,此时还没有传入参数x,自然会触发对象'x'未找到的报错。你需要的是让prod_x返回一个闭包函数,该函数接收x作为入参,同时捕获传入的nodes变量供后续计算使用。
基础实现(单值x)
prod_x <- function(nodes) { function(x) { prod(x - nodes) } }
测试效果:
NODES <- 1:5 z <- prod_x(nodes = NODES) z(0) #> [1] -120
向量化实现(支持x为多值向量)
如果需要支持输入向量化的x,同时输出对应长度的计算结果,可以结合outer和apply实现,无需依赖额外包:
prod_x <- function(nodes) { function(x) { # 先构造x每个元素与nodes的差值矩阵,再按行求乘积 apply(outer(x, nodes, FUN = `-`), MARGIN = 1, FUN = prod) } }
向量化测试效果:
z <- prod_x(1:5) z(c(0, 1, 6)) #> [1] -120 0 120
内容的提问来源于stack exchange,提问作者user4687531
相关产品推荐
相关产品推荐

