[英]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=1000
, p
是包含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_prob
的x[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.