我正在使用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:非二進制運算符的非數字參數「 我該如何解決這個問題?
我正在使用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:非二進制運算符的非數字參數「 我該如何解決這個問題?
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")
您需要使用值,而不是整數對象本身。如果你輸入:
> class(integrate(f, 0, 3))
[1] "integrate"
你會注意到這種類型是integrate
。這是你得到的non-numeric argument
錯誤的來源。
下面的定義應該爲你工作:
h <- function(x) { g(x)$value + 1 + 2 }
這是行不通的 –