【发布时间】:2015-06-07 16:46:21
【问题描述】:
我写了一个用户定义的函数:
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的定义
【问题讨论】:
-
'data.frame': 1 obs. of 2 variables: $ V1: num 1.44 $ V2: num -2.66 NULL -
这就是问题所在。
dnorm将接受矩阵,而不是数据框。试试dnorm(as.matrix(z), x[1... -
@plafort 最好将此作为答案。
标签: r