我有一个载体
p <- seq(0,1,length=11)
我想在求和中使用它作为自变量
如果我制作一个用手编码求和的函数
f <- function(a){
a^0*(1-a)^5+a^1*(1-a)^4+...
}
并传递p
,然后我得到正确的输出并且不会抛出任何错误
results <- f(p)
我可以绘制它,results
是正确的长度,一切都是犹太洁食。它只是看起来很难看,所以我想改用sum()
并尝试
i <- 0:5
g <- function(a,i){
sum(a^i*(1-a)^(5-i))
}
但是当我尝试g(p,i)
时,它会抛出错误
longer object length is not a multiple of shorter object length
我相信我收到此错误的原因得到了很好的回答over here,特别是有关回收的部分。 sum
同时在i
向量和p
之间循环,然后在p[7]
和i[1]
到达i
时结束{1}}。然而,我的问题是将f
简化为g
的正确方法是什么?
答案 0 :(得分:3)
我会做这样的事情,
p <- seq(0,1,length=11)
i <- 0:5
g <- function(a,i){
a^i*(1-a)^(5-i)
}
plot(p, rowSums(outer(X = p, Y = i, FUN = g)))
要回答你的问题,我认为没有一种正确的方式来做到这一点;更实用的方法可能是
Reduce(function(s, x) s + g(p, x), x = 0:5, init=0)
但它可能效率较低,而且可读性较差。
答案 1 :(得分:2)
也许试试这个:
var newarray = [];
$.each(array["#VER"], function(i, item) {
if (condition for subarray) {
newarray.push(i,item);
}
});
答案 2 :(得分:2)
您想要计算的函数不会相对于p
自然地进行矢量化。 sapply
是在矢量上映射非矢量化函数的自然选择:
f <- function(x){
i <- 0:5
sum(x^i*(1-x)^(5-i))
}
p <- seq(0,1,length=11)
sums <- sapply(p,f)
> sums
[1] 1.0000 0.6643 0.4368 0.2923 0.2128 0.1875 0.2128
[8] 0.2923 0.4368 0.6643 1.0000