1

我不确定如何用正确的术语提出这个问题,并且相关问题不是同一件事。我想绘制一个函数,并注意到 R 并没有用我的系数变化来更新绘图。

a <- 2
x <- seq(-1, 1, by=0.1)
y <- 1/(1+exp(-a*x))
plot(x,y)

a <- 4
plot(x,y) # no change

y <- 1/(1+exp(-a*x)) # redefine function
plot(x,y) # now it updates

以防万一我不知道自己在做什么,我按照这个 R 基本绘图教程的语法。唯一的区别是使用 of=而不是<-for assignment of y = 1/(1+exp(-a*x))。结果是一样的。

我实际上从来没有用 R 绘制过一个函数,所以这是我第一次遇到这种情况。这让我想知道如果重新定义的变量没有传播到使用初始值初始化的函数或对象,我是否在其他领域看到了不好的结果。

1)我做错了什么吗?有一种方法可以动态分配变量,以便函数考虑当前值与创建它们时的值?

2)如果没有,R程序员在调整变量分配并确保其他所有内容都正确更新时是否有一种通用的方法来解决这个问题?

4

2 回答 2

2

实际上,您不是在绘制函数。相反,您正在绘制两个向量。由于在调用下一个图之前您没有更新向量的值,因此您会得到两个相同的图。

要直接绘制函数,您需要使用curve()函数:

f <- function(x, a)1/(1+exp(-a*x))

阴谋:

curve(f(x, 1), -1, 1, 100)

在此处输入图像描述

curve(f(x, 4), -1, 1, 100)

在此处输入图像描述

于 2012-06-21T16:59:03.047 回答
1

R 不是 Excel、MathCAD 或任何其他可能使您相信更改对象的值可能会更新可能在过去某个时间使用过该值的其他向量的应用程序。当你这样做时

a <- 4
plot(x,y) # no change

“x”或“y”没有变化。

尝试这个:

curve( 1/(1+exp(-a*x))  )
a <- 10
curve( 1/(1+exp(-a*x)) )
于 2012-06-21T16:56:10.227 回答