99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-10-16 閱讀量: 2114
R語言中兩類比較符的區(qū)別

R語言中的?&?和?&&有什么區(qū)別?

它們是Logical Operators(邏輯運算符)

區(qū)別之一

當然,如果只計算兩個標量(長度為1的向量),他倆似乎是差不多的:

TRUE?&?FALSE

##?[1]?FALSE

TRUE?&&?FALSE

##?[1]?FALSE

如果計算的是兩個向量的話,結(jié)果就明顯不同:

c(TRUE,?FALSE)?&?c(TRUE,?TRUE)

##?[1]??TRUE?FALSE

c(TRUE,?FALSE)?&&?c(TRUE,?TRUE)

##?[1]?TRUE

區(qū)別在于,& 依次比較兩個向量中的對應元素,而&&只比較兩個向量的首個元素。 &&的這種偷懶的做法確保了它的計算結(jié)果只為一個標量,TURE或FALSE。這就使他 可以與if等只接受一個標量為參數(shù)的函數(shù)完美搭配起來。

區(qū)別之二

說到偷懶,和&相比,&&偷懶的地方還不止這一處:

a?#對象a不存在

##?Error?in?eval_r(expr,?envir,?enclos):?找不到對象'a'

FALSE?&?a

##?Error?in?eval_r(expr,?envir,?enclos):?找不到對象'a'

FALSE?&&?a

##?[1]?FALSE

在進行比較時,&& 如果發(fā)現(xiàn)左邊對象的值為FALSE,那么他就不會計算右邊的對象了,(因為無論 右邊對象的值為多少,邏輯與的結(jié)果總為FALSE)所以即使右邊對象不存在時,也沒有拋出錯誤。而 &就老實多了,計算完左邊后他還會計算右邊,而右邊對象不存在,于是拋出錯誤。&&的這種計算方法 叫做短路計算。

如果好奇&&是怎么偷懶的,可以查看它的源代碼,這里略去。

167.9961
4
關注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子