我在r中获得了相同函数的不同结果

时间:2017-12-12 09:27:41

标签: r

我试图让我的功能更方便阅读。因此,我使用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

1 个答案:

答案 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