我不确定如何用正确的行话来提出这个问题,相关的问题也不是关于同一件事。我想绘制一个函数,并注意到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
为了防止我不知道自己在做什么,我遵循了this R basic plotting tutorial上的语法。唯一的区别是使用=
而不是<-
来分配y = 1/(1+exp(-a*x))
。结果是一样的。
实际上,我从来没有用R绘制过函数,所以这是我第一次遇到这种情况。这让我想知道,如果重新定义的变量没有传播到使用初始值初始化的函数或对象,我是否在其他方面看到了糟糕的结果。
1)我做错了什么吗?有一种动态赋值变量的方法,这样函数就会考虑到当前值与创建时的值?
2)如果没有,当R程序员调整变量赋值并确保其他所有内容都正确更新时,有没有一种通用的方法来解决这个问题?
发布于 2012-06-21 16:59:03
实际上,您并不是在绘制函数。相反,您要绘制两个向量。由于在调用下一个图之前没有更新向量值,因此会得到两个相同的图。
要直接绘制函数,需要使用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-21 16:56:10
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)) )
https://stackoverflow.com/questions/11142968
复制