: .
(log(x))>0)
{ y <- log(log(x)); print(cbind(x,y)); } else
{ cat('Unable to compute\n'); }
• 注意“&&”表示“与”,它是一个短路运算符,即第一个
条件为假时就不计算第二个条件。如果不这样此例中
计算对数就可以有无效值。
• 在条件中也可以用“||”(两个连续的竖线符号)表示
“或”,它也是短路运算符,当第一个条件为真时就不
再计算第二个条件。• 在用R编程序时一定要时刻牢记R是一个向量语言,几
乎所有操作都是对向量进行的。而R中的if语句却是一
个少见的例外,它的判断条件是标量的真值或假值。比
如,我们要定义一个分段函数f(x),当x为正时返回1,
否则返回0,马上可以想到用if语句实现如下:
>if(x>0) 1 else 0 #当x是向量的时候,条件x>0返回一组
逻辑向量
• 当x是标量时这个定义是有效的,但是当自变量x是一个
向量时,比较的结果也是一个向量,这时条件无法使
用。所以,这个分段函数应该这样编程:
>y= numeric(length(x))
>y[x>0] <- 1
>y[x<=0] <- 0 # 这句可以省略• 对于条件语句是向量形式,R提供了ifelse()函数,它的
使用格式为
>ifelse(condition, a, b)
• 它表示,当condition[i]成立的时候,对应的取值为a[i],
否则取值为b[i]。最终返回一个和参数向量同长的向量
• > x<-c(55, 60, 85, 90);
> a<-"pass"; b<-"fail" 若a,b和x不
是等长的,则
> ifelse(x>=60, a, b) 较短的循环使
[1] "fail" "pass" "pass" "pass" 用
• > a<-c("a1", "a2")
> b<-c("b1", "b2","b3","b4")
> ifelse(x>=60, a, b)
[1] "b1" "a2" "a1" "a2"• 有多个if语句时else与最近的一个配对。可以使用
if ... else if ... else if ... else ...的多重判断结构表示
多分支。
•> x=0;
•> if (x>0)
{ value <-x } else # else必须跟在表达式组后面
if (x<0)
{ value <- -x } else if (x==0)
{ value="ZERO"}
•> value
[1] ''ZERO"Ifelse (condiction,a,b)
#这个表达式返回一个向量,其长度为a,b中的最
[i]为真时返回a[i],否则返回b[i].
例:写出下面函数的R程序
n
Iyi xi
i1
prob <- function(y, x, w, beta)
{
v <- x %*% beta
u <- (y - v)
z <- ifelse(abs(u)<=w, 1, 0)
return(sum(z))
}• #case 3
• x<-rnorm(400)
• eps<-c(rnorm(360,0,.25),rnorm(40,5,.25))
• hist(eps)
• y<-1+2*x+eps
• plot(x,y)
• x <- cbind(1, x)
• r<-8000
• s<-1000
• prob <- function(y, x, w, beta)
•{
• v <
R语言--程序设计 来自淘豆网m.daumloan.com转载请标明出处.