将运算符从Matlab转换为R.

时间:2015-03-30 12:38:01

标签: r matlab operators

我在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)

1 个答案:

答案 0 :(得分:1)

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之后没有在线上做任何分配,循环立即为我退出(但运行没有错误)和打印0的{​​{1}}。

修改 由于@Khashaa的好地方,现在正确运行