我坚持用R公式编写这个公式,我真的需要帮助。问题是我想生成如下系列:
x<-seq(-3,3,0.01)
y0<-exp(-abs(x)^0)
y1<-exp(-abs(x)^1)
y2<-exp(-abs(x)^2)
y3<-exp(-abs(x)^3)
y4<-exp(-abs(x)^4)
plot(y[1]~x)
plot(y[2]~x)
etc.
现在我想写一个循环:
x<-seq(-3,3,0.01)
y[i]<-exp(-abs(x)^i)
plot(y[i]~x)
我写的代码是:
par(mfrow=c(3,4))
x<-seq(-3,3,0.01)
for(i in 0:5){
y[i]<-exp(-abs(x)^i)
}
plot(y[i]~x)
我从R收到的错误消息是:
> Warning messages:
1: In y[i] <- exp(-abs(x)^i) :
number of items to replace is not a multiple of replacement length
非常感谢您的帮助。它真的让我烦恼,但我不知道我错过了什么。
答案 0 :(得分:1)
我会使用expand.grid()
执行此操作,它会为您提供i和x的所有组合。这里不需要循环。
x <- seq(-3,3,0.01)
i <- 1:4
df <- expand.grid(x, i)
df$y <- exp(-abs(df$Var1)^df$Var2)
require(ggplot2)
ggplot(df, aes(x = Var1, y = y, col = factor(Var2))) +
geom_point()
答案 1 :(得分:0)
完全同意EDi的解决方案。只是为了表明你也可以解决原始代码中的错误,这里有一个解决方案:
par(mfrow=c(3,2))
x<-seq(-3,3,0.01)
# you have to initialize y and it has to be two-dimensional
y <- matrix(nrow=6, ncol=length(x))
for(i in 0:5){
# again, y has 2 dimensions and
# a matrix only has positive indexes
y[i+1,]<-exp(-abs(x)^i)
# you want to plot from within the loop
plot(y[i+1,]~x)
}