我想用x和coef为x的多个值创建一个函数,这样输出就是一个向量,就像我在这里试过的那样:
directpoly<-function(x,coef) {
for(n in length(coef)) {
total<-sum(coef*x^(0:(n-1)))
}
total
}
当我输入x的一个值和系数值的任何向量时,这是有效的,但我想要更多。我想为系数输入一定数量的值,比如c(5,9,-2),并且该函数产生三个不同的值,一个用于x的每个输入,例如x <-2:4。那么在那种情况下我想要输出15,14,9。任何想法?我很新,所以感谢所有的帮助。
编辑:我拿出一个“&lt; - ”,我意外地放在那里。对不起,如果这是造成混淆的原因。我最终想要的是一个功能 P(x)= c1 + c2 * x + ... + cn * x ^ n-1
答案 0 :(得分:2)
这有用吗?
directpoly <- function(x, coef) {
seqcoef <- seq_along(coef) - 1
sapply(x, function(z) sum(coef*z^seqcoef))
}
directpoly(2:4, c(5,9,-2))
# [1] 15 14 9
如果是这样,解决这个问题的诀窍是两步:
确定要对x
的每个值(无向量)执行的操作。在这种情况下,它只是来自:
sum(coef*x^(1:length(coef)-1))
sum(coef*x^(0:(length(coef)-1)))
sum(coef*x^(seq_along(coef)-1))
因为我最终将其放入一些循环/应用配方中,所以我不需要每次重新计算序列,所以我将其分解:
seqcoef <- seq_along(coef) - 1
sum(coef*x^seqcoef)
现在您知道每个x
`要做什么,现在可以映射或应用它:
sapply(x, function(z) ...)
其中...
是我们上面确定的。对于清晰的编码,许多人认为硬定义这个函数的技术是好的,所以像:
directpoly1 <- function(x, coef, seqcoef = seq_along(coef) - 1) {
sum(coef*x^seqcoef)
}
directpoly <- function(x, coef) {
seqcoef <- seq_along(coef) - 1
sapply(x, directpoly1, coef, seqcoef)
}
(我对这个版本采取了更多自由,使用标量参数显式运行它,主要用于单元测试。这不是绝对必要的,所以这个答案顶部的函数应该足够了。)