gpt4 book ai didi

r - 从 R 中的标量函数创建向量函数

转载 作者:行者123 更新时间:2023-12-01 09:02:56 25 4
gpt4 key购买 nike

这是我的功能。它在 [-5,-3] 和 [3,5] 和 0 其他地方取某些值。该函数关于原点对称。

f<-function(x){
y=0
if (x>=-5 && x<=-3){
y=3*(1-(x+4)^2)/8
}
if (x>=3 && x<=5){
y=3*(1-(x-4)^2)/8
}
return(y)
}

好的,所以我使用了函数 sapply (bins, f)

其中 bins = seq(-5,5,by=0.05)。这很好用!

但是当我尝试做 f(bins) 时,我得到了这个荒谬的答案。在 [-5,-3] 范围内是正确的。

我对此的猜测是,当函数 f 检查第一个 if 条件时,它仅检查 bins 向量的第一个值,因此对于 (-3,5] 范围,它错误地使用了仅适用于[-5,-3]。

我试图找到一种为这些点绘制曲线的方法,但是当我使用曲线函数时,使用 f(bins) 得到的错误值绘制曲线

谁能告诉我如何解决这个问题?

最佳答案

您必须 Vectorize函数 f 让它应用于向量:

f = Vectorize(f)
print(f(bins))

请注意,您也可以将 curvesapply 一起使用:

curve(sapply(x, f), from=-5, to=5)

最后,如果你像这样用 ifelse 编写函数:

f = function(x) {
ifelse(x >= -5 & x <= -3, 3*(1-(x+4)^2)/8, ifelse(x>=3 & x<=5, 3*(1-(x-4)^2)/8, 0))
}

这将允许它在不需要 Vectorize 的情况下处理向量。

关于r - 从 R 中的标量函数创建向量函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13544594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com