我試圖自動找到函數的總和。然後,爲確保它按預期運行,我手動執行並使用for
循環,但結果不同。這裏是我的代碼(我的功能比這個例子中很困難,但都差不多)手動和循環返回不同的值,即使set.seed
mu1 <- list(2,3,4)
sd1 <- list(0.5,0.6,0.7)
w <- c(0.5,0.2,0.3)
set.seed(123)
mylist <- list(rnorm(10,mu1[[1]],sd1[[1]]),
rnorm(10,mu1[[2]],sd[[2]]),
rnorm(10,mu1[[3]],sd[[3]]))
ta <- list(c(0.5,0.6,0.7,0.4,0.3,0.5,0.65,0.2,0.9,0.1),c(0.4,0.6,0.7,0.2,0.3,0.5,0.65,0.2,0.8,0.3),
c(0.3,0.2,0.7,0.4,0.3,0.5,0.25,0.2,0.6,0.4))
xx <- sum(ta[[1]]*(log(w[1])+dnorm(mylist[[1]],log=T)),ta[[2]]*(log(w[2])+dnorm(mylist[[2]],log = T)),ta[[3]]*
(log(w[3])+dnorm(mylist[[3]],log = T)))
ll <- list()
for(i in 1:3){
ll[[i]] <- ta[[i]]*log(w[i])+dnorm(mylist[[i]],log = T)
sum(ll[[i]])
}
爲什麼這些結果是不平等的分別是手動和循環返回這些結果,
[1] -89.6547
[1] -84.28907
。請任何幫助,這仍然是由於set.seed
。
我想獲得相同的值,你的'for'循環'mapply(函數(X, y,z)sum(x * y + dnorm(z,log = TRUE)),ta,log(w),mylist) #[1] -34.32778 -67.25251 -84.28907'也使用手動方法' ta [[3]] * log(w [3])+ dnorm(mylist [[3]],log = TRUE)) #[1] -84.28907' – akrun