这是我在R中的程序:
mletheta<-function(x)
{
n<-length(x)
temp<-x<=0
if(n==0||sum(temp)>0)
{
stop("ERROR:x must be a vector of positive real values.\n")
}
thetahat<--1*n/sum(log(1-exp(-1*x**2)))
return(thetahat)
}
mletheta(-3)
我的问题是我无法理解如果x&lt; = 0,那么sum(temp)&gt; 0。当x = -5:-4时,sum(temp)应为-9 <0。我不懂逻辑吗?
答案 0 :(得分:2)
让我们分解函数的第一部分:
x <- -5:-4
n <- length(x)
n
# [1] 2
temp <- x<=0
temp
# [1] TRUE TRUE
sum(temp)
# [1] 2
这符合if
语句if(n==0||sum(temp)>0)
,如果向量的长度为NULL(n==0
),则显示错误消息,在这种情况下不是真的,temp的总和大于0(sum(temp)>0
),则为>或。在这里,sum(temp)
给出了2。