簡體   English   中英

R:數學函數的非數字參數

[英]R: Non-numeric argument to mathematical function

我寫了一個用戶定義的函數:

epf <- function(z,x,noise=std_noise){
    z_dims <- length(z)
    std_noise <- 0.5*matrix(1,1,z_dims)
    std_noise <- as.data.frame(std_noise)

    obs_prob <- dnorm(z,x[1:z_dims],noise)

    error <- prod(cbind(1,obs_prob))
    return(error)
}

此函數在另一個函數的for循環中調用:

w <- matrix(0,N,1)
        for (i in 1:N){
            w[i] <- epf(z,p[i,],R_noise) 
        }

其中z是二維矢量, N=1000p是包含1000個觀測值和4個變量的數據幀,而R_noise是包含1個觀測值和4個變量的數據幀。

在這里,我得到一個錯誤:“ obs_prob <- dnorm(z,x[1:z_dims],noise) ”行的錯誤:“數學函數的非數字參數”

誰能幫助我找到錯誤?

我瀏覽了與我類似的問題,但仍然無法在代碼中找到錯誤。

編輯:
添加了N定義

dnorm(as.matrix(z), x[1:a_dims], noise)可能會更好。

更廣泛地說,具有一行和兩列的數據幀可能更好地表示為矢量。 數據框看起來像矩陣,正如您所說的那樣是“二維向量”,但是它們在重要方面是不同的。

相同的錯誤可能發生,因為你喂養dnorm在其最后一個參數的第二數據幀noise通過使R_noise

另外,請考慮p[i, ]具有四個值。 它由obs_probx[1:z_dims] 在這種情況下,因為length(z)為2,所以z_dims等於2。因此,您正在評估dnorm(data.frame(z), p[1, ][1:2], data.frame(R_noise))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM