2013-04-18 53 views
0

我想計算一個二次方程的不同y值的根。但是當我運行下面的代碼時得到一個我不明白的錯誤。如果y只是一個數值,而不是向量c(0.6,0.4,0.9),它就可以工作。我錯誤地使用了sapply,或者它是錯誤的函數變量傳遞?如何使用sapply循環函數?

# Paramters for quadratic poly 
a<-0.875 
b<-0.3779 
c<-0.098 
y<- c(0.6,0.4,0.9) 

# quadratic function 
fun<-function(x) c-y+b*x+a*x^2 

# Finding root in specific interval function 
root<- function (x) uniroot(fun,c(0,2))$root 

# Finding roots for a list of y values 
res<-sapply(y,root) 
+0

你不通過你的'y'(成爲在'root'功能'x')你內心'fun'功能。 FWIW,我得到相同的錯誤調用'root()'。 – Justin

回答

2

比如,你可以這樣做:

sapply(y,function(y) uniroot(fun,c(0,2),y=y,c=c,a=a,b=b)) 
+0

謝謝...這現在可以工作。所以這是一個關於將變量傳遞給函數的quastion。 #爲二次聚 Paramters一個<-0.875 B'-0.3779 ç<-0.098 ý< - C(0.8,0.4) #二次函數 樂趣<-function(X,Y,A,B, c)c-y + b * x + a * x^2 #在特定區間0,2 sapply(y,function(y)uniroot(fun,c(0,2),y = y,c = C,A = A,b = b)個$根) –