在r中使用组合数学创建循环

在r中使用组合数学创建循环,r,loops,math,for-loop,combinatorics,R,Loops,Math,For Loop,Combinatorics,我试图在R中创建一个组合函数,它取决于我设置变量的数值。这告诉我我必须使用循环。下面是我试图创建的等式的一个示例,我填写了示例中给出的数字: 这个方程式的变化取决于b的数值。我猜我需要一个和和和一个循环 comb = function(n, x) {return(factorial(n) / (factorial(x) * factorial(n-x)))} a <- 8 b <- 4 c <- 0:b p <- 0.05 total = function(n)

我试图在R中创建一个组合函数,它取决于我设置变量的数值。这告诉我我必须使用循环。下面是我试图创建的等式的一个示例,我填写了示例中给出的数字:

这个方程式的变化取决于b的数值。我猜我需要一个和和和一个循环

comb = function(n, x) {return(factorial(n) / (factorial(x) * factorial(n-x)))}


a <- 8
b <- 4
c <- 0:b
p <- 0.05

total = function(n) {
  return(((comb(a,b + c)*comb((n-a), (c - b)*(-1))/comb(n,a) - 0.05)
}
comb=函数(n,x){返回(阶乘(n)/(阶乘(x)*阶乘(n-x))}

a您不需要定义
comb
——这是由基数R中的函数
choose
提供的。我认为您所需要的是将
choose
sum
组合起来计算分子:

total <- function(n) {
  sum(choose(a, b:(2*b)) * choose(n-a, b:0)) / choose(n, a) - p
}

# Plot total(n) for various n values:
a <- 8
b <- 4
p <- 0.05
n <- 20:100
plot(n, sapply(n, total))

太棒了!为了在等于0时找到最接近的值,我使用了:x=0 w