2016-04-13 55 views
0

我正在使用R進行一些整合。R如何解決二進制運算符錯誤非數字參數

如果我有一個函數f(x)= X:f<-function(x) return(x)

我使函數g(x)來計算其積分是這樣的:

g<-function(x) return(integrate(f,0,x))

然後我做第三函數H(x)的處理結果我從G得到(X):

h<-function(x) {g(x)+1+2}但我總是得到錯誤信息「錯誤的G(X)+1+ 2:非二進制運算符的非數字參數「 我該如何解決這個問題?

回答

0

integrate不會返回一個數字,它返回integrate類的對象,這也告訴你數值誤差的一些細節,等見?integrate: :值

這可以通過運行class(g(2))來看到。

你必須使用g(x)$value提取值:

h <- function(x) g(x)$value + 1 + 2 

我知道g(x)可以像對待一個list,並通過使用dput提取value

dput(g(2)) 

# structure(list(value = 2, abs.error = 2.22044604925031e-14, 
#    subdivisions = 1L, message = "OK", 
#    call = integrate(f = f, lower = 0, upper = x)), 
#   .Names = c("value", "abs.error", "subdivisions", 
#      "message", "call"), 
#   class = "integrate") 
0

您需要使用,而不是整數對象本身。如果你輸入:

> class(integrate(f, 0, 3)) 
[1] "integrate" 

你會注意到這種類型是integrate。這是你得到的non-numeric argument錯誤的來源。

下面的定義應該爲你工作:

h <- function(x) { g(x)$value + 1 + 2 } 
+0

這是行不通的 –

相關問題