我试图让我的功能更方便阅读。因此,我使用lapply
而不是多次重复我的代码。但是,我得到了相同功能的不同结果。我的目标是,如果我有一个大的列表,例如X = (x1, x2,..,x10)
。因此,我不是为10
元素编写长代码,而是使用lapply
编写简单代码。但我得到了不同的结果。
这是我的代码:
x1 <- rnorm(10,4,2)
x2 <- rnorm(10, 3,3)
x <- list(x1,x2)
w <- c(0.5,0.5)
ll_1 <- lapply(1:2, function(i) log(w[[i]] * dnorm(x[[i]],log=F)))
ll_new <- sum(unlist(ll_1))
ll_2 <- sum(log(w[[1]]*dnorm(x1,log=F)+w[[2]]*dnorm(x2,log=F)))
> identical(ll_new ,ll_2)
[1] FALSE
答案 0 :(得分:1)
总和的对数不等于log(log( a + b ) != log(a) + log(b)
)...
x1 <- rnorm(10,4,2)
x2 <- rnorm(10, 3,3)
x <- list(x1,x2)
w <- c(0.5,0.5)
ll_1 <- lapply(1:2, function(i) log(w[[i]] * dnorm(x[[i]],log=F)))
ll_new <- sum(unlist(ll_1))
ll_2 <- sum(log(w[[1]]*dnorm(x[[1]],log=F))+log(w[[2]]*dnorm(x[[2]],log=F)))
identical(ll_new ,ll_2)
[1] TRUE