gpt4 book ai didi

r - 在R中应用,如何使用?

转载 作者:行者123 更新时间:2023-12-04 22:47:32 26 4
gpt4 key购买 nike

我是一名 C++ 程序员,我是 R 的新手。有人告诉我在 R 中使用 for 循环是一个坏主意,最好使用 sapply .我写了下面的代码来计算birthday coincidence的概率:

prob <- 1           # prob of no coincidence
days <- 365
k <- 50 # how many people
probability <- numeric() #probability vector (empty right now)
for(i in 1:k){
prob <- (days - i + 1)/days * prob # Formula for no coincidence
probability[i] <- 1 - prob
}

我如何用 sapply 做同样的事情?我想做类似的事情:
1 - sapply(1:length(m), function(x) prod(m[1:x]))

但是如何使用公式来避免生日的巧合呢?

最佳答案

你可以这样做:

m <- (days - seq_len(k) + 1) / days
probability <- 1 - sapply(seq_along(m), function(x) prod(m[1:x]))

但有用的 cumprod 上会缺少这一点。功能:
probability <- 1 - cumprod(m)

这会快很多。

(还在 seq_alongseq_len 处给出了一个峰值,它们在处理零长度向量时比 : 更稳健。)

关于r - 在R中应用,如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com