向量化程式碼:計算對數總和
在統計中,一個常見的操作是計算機率的對數總和。以下程式碼會計算對數總和(也就是各元素取對數後再相加)。
# x 是一個機率向量
total <- 0
for(i in seq_along(x))
total <- total + log(x[i])
不過,這段程式可以用向量化的寫法大幅改進效能。
本練習屬於課程
撰寫高效 R 程式碼
練習說明
- 使用
log()和sum()函式來求出x的對數總和,將上面的迴圈簡化。 - 把答案存到物件
log_sum。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Initial code
n <- 100
total <- 0
x <- runif(n)
for(i in 1:n)
total <- total + log(x[i])
# Rewrite in a single line. Store the result in log_sum
log_sum <- ___