将运算符从 Matlab 转换为 R

Convert operator from Matlab to R

我在 Matlab 中有以下代码:

alpha=5.5; beta=3.1; a=0; b=1; c=2.5;
X=0; Y=c; % Initial values
while Y > gamma(alpha+beta)/gamma(alpha)/gamma(beta)...
* X.^(alpha-1).* (1-X).^(beta-1);
U=rand; V=rand; X=a+(b-a)*U; Y=c*V;
end; 
X;

我想转换成 R。这是我的尝试(运算符有问题):

alpha <- 5.5
beta <- 3 .1
a <- 0
b <- 1
c <- 2.5
X <- 0
Y <- c
while(Y > gamma(alpha+beta)/gamma(alpha)/gamma(beta)) 
{
*X.^(alpha-1).*(1-X).^(beta-1) # incorrect line
U=runif(1, 0, 1)
V=runif(1, 0, 1)
X=a+(b-a)*U
Y=c*V
}
print (X)

beta 的赋值无效,您需要 {while 在同一行:

alpha <- 5.5
beta <- 3.1
a <- 0
b <- 1
c <- 2.5
X <- 0
Y <- c
while (Y > gamma(alpha + beta)/gamma(alpha)/gamma(beta) * X^(alpha - 1) * (1 - X)^(beta - 1)) {
    U <- runif(1, 0, 1)
    V <- runif(1, 0, 1)
    X <- a + (b - a) * U
    Y <- c * V
} 

检查你的代码以确保你在做你认为你在做的事情,在 while 之后的行上没有进行任何赋值,我的循环一直在立即退出(但是 运行 没有错误)并为 X.

打印 0

编辑: 由于@Khashaa

的好地方,现在可以正确运行