溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

R語言邏輯型運(yùn)算的示例分析

發(fā)布時(shí)間:2022-03-04 13:34:42 來源:億速云 閱讀:258 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹R語言邏輯型運(yùn)算的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

一、邏輯型向量與比較運(yùn)算

        邏輯型是 R 的基本數(shù)據(jù)類型之一,只有兩個(gè)值 TRUE 和 FALSE, 缺失時(shí)為 NA。

        邏輯值一般產(chǎn)生自比較,如

sele <- (log10(15) < 2); print(sele)

返回:

R語言邏輯型運(yùn)算的示例分析

         向量比較結(jié)果為邏輯型向量。如

c(1, 3, 5) > 2

返回:

R語言邏輯型運(yùn)算的示例分析

(1:4) >= (4:1)

返回:

R語言邏輯型運(yùn)算的示例分析

        與 NA 比較產(chǎn)生 NA,如

c(1, NA, 3) > 2

返回:

R語言邏輯型運(yùn)算的示例分析

NA == NA

返回:

R語言邏輯型運(yùn)算的示例分析

        為了判斷向量每個(gè)元素是否 NA,用 is.na() 函數(shù),如

is.na(c(1, NA, 3) > 2)

返回:

R語言邏輯型運(yùn)算的示例分析

        用 is.finite() 判斷向量每個(gè)元素是否 Inf 。

is.finite(c(1,Inf,8))

返回:

R語言邏輯型運(yùn)算的示例分析

        比較運(yùn)算符包括 :< <= > >= == != %in%

        分別表示小于、小于等于、大于、大于等于、等于、不等于、屬于。要注意等于 比較用了兩個(gè)等號(hào)。

        %in% 是比較特殊的比較, x %in% y 的運(yùn)算把向量 y 看成集合,運(yùn)算結(jié)果是一個(gè)邏輯型向量,第 i 個(gè)元素的值為 x 的第 i 元素是否屬于 y 的邏輯型值。如

c(1,3) %in% c(2,3,4)

返回:

R語言邏輯型運(yùn)算的示例分析

c(NA,3) %in% c(2,3,4)
## [1] FALSE TRUE
c(1,3) %in% c(NA, 3, 4)
## [1] FALSE TRUE
c(NA,3) %in% c(NA, 3, 4)
## [1] TRUE TRUE

        函數(shù) match(x, y) 起到和 x %in% y 運(yùn)算類似的作用,但是其返回結(jié)果不是找到與否,而是對(duì) x 的每個(gè)元素,找到其在 y 中首次出現(xiàn)的下標(biāo),找不到時(shí)取缺失值,如

match(c(1, 3), c(2,3,4,3))

返回:

R語言邏輯型運(yùn)算的示例分析

二、 邏輯運(yùn)算

        為了表達(dá)如 “ x > 0 而且 x < 1”, “ x &le; 0 或者 x &ge; 1” 之類的復(fù)合比較,需要使用邏輯運(yùn)算把兩個(gè)比較連接起來。邏輯運(yùn)算符為 & , | 和 ! , 分別表示 “ 同時(shí)成 立” 、 “ 兩者至少其一成立 ” 、 “ 條件的反面 ” 。比如,設(shè) age<=3 表示嬰兒, sex==' 女' 表示女性,
        則 age<=3 & sex==' 女 ' 表示女嬰 ,
        age<=3 | sex==' 女 '表示嬰兒或婦女,
        !(age<=3 | sex==' 女 ') 表示既非嬰兒也非婦女。
為了確定運(yùn)算的先后次序可以用圓括號(hào) () 指定。
        用 xor(x, y) 表示 x 與 y 的異或運(yùn)算,即值不相等時(shí)為真值,相等時(shí)為假值,有缺失值參加運(yùn)算時(shí)為缺失值。
        邏輯向量與邏輯標(biāo)量之間的邏輯運(yùn)算,兩個(gè)邏輯向量之間的邏輯運(yùn)算規(guī)則遵從一般 R 向量間運(yùn)算規(guī)則。
        在右運(yùn)算符是缺失值時(shí),如果左運(yùn)算符能夠確定結(jié)果真假,可以得到非缺失的結(jié)果。例如,TRUE | NA 為 TRUE , FALSE & NA 為 FALSE 。
        不能確定結(jié)果時(shí)返回 NA,比如, TRUE & NA 為 NA , FALSE | NA 為 NA 。
        && 和 || 分別為短路的標(biāo)量邏輯與和短路的標(biāo)量邏輯或,僅對(duì)兩個(gè)標(biāo)量進(jìn)行運(yùn)算,如果有向量也僅使用第一個(gè)元素。一般用在 if 語句、 while 語句中,且只要第一個(gè)比較已經(jīng)決定最終結(jié)果就不計(jì)算第二個(gè)比較。例如

if(TRUE || sqrt(-1)>0) next

由于其中的 sqrt(-1) 部分不會(huì)執(zhí)行,結(jié)果返回:

R語言邏輯型運(yùn)算的示例分析

三、邏輯運(yùn)算函數(shù)

        因?yàn)?R 中比較與邏輯運(yùn)算都支持向量之間、向量與標(biāo)量之間的運(yùn)算,所以在需要一個(gè)標(biāo)量結(jié)果時(shí)要特別注意,后面講到的 if 結(jié)構(gòu)、 while 結(jié)構(gòu)都需要邏輯標(biāo)量而且不能是缺失值。這時(shí),應(yīng)該對(duì)缺失值結(jié)果單獨(dú)考慮。
        若 cond 是邏輯向量,用 all(cond) 測(cè)試 cond 的所有元素為真;用 any(cond) 測(cè)試 cond 至少一個(gè)元素為真。 cond 中允許有缺失值,結(jié)果可能為缺失值。如

c(1, NA, 3) > 2
all(c(1, NA, 3) > 2)
any(c(1, NA, 3) > 2)
all(NA)
any(NA)

返回:

R語言邏輯型運(yùn)算的示例分析

        函數(shù) which() 返回真值對(duì)應(yīng)的所有下標(biāo),如

which(c(FALSE, TRUE, TRUE, FALSE, NA))
which((11:15) > 12)

返回:

R語言邏輯型運(yùn)算的示例分析

        函數(shù) identical(x,y) 比較兩個(gè) R 對(duì)象 x 與 y 的內(nèi)容是否完全相同,結(jié)果只會(huì)取標(biāo)量 TRUE 與 FALSE 兩種。如

identical(c(1,2,3), c(1,2,NA))
identical(c(1L,2L,3L), c(1,2,3))

因?yàn)榍耙幌蛄渴钦麛?shù)型,后一向量是實(shí)數(shù)型,結(jié)果返回:

R語言邏輯型運(yùn)算的示例分析

        函數(shù) all.equal()identical() 類似,但是在比較數(shù)值型時(shí)不區(qū)分整數(shù)型與實(shí)數(shù)型,而且相同時(shí)返回標(biāo)量 TRUE ,但是不同時(shí)會(huì)返回一個(gè)說明有何不同的字符串。如

all.equal(c(1,2,3), c(1,2,NA))
all.equal(c(1L,2L,3L), c(1,2,3))

返回:

R語言邏輯型運(yùn)算的示例分析

        函數(shù) duplicated() 返回每個(gè)元素是否為重復(fù)值的結(jié)果,如:

duplicated(c(1,2,1,3,NA,4,NA))

返回:

R語言邏輯型運(yùn)算的示例分析

         用函數(shù) unique() 可以返回去掉重復(fù)值的結(jié)果,如

unique(c(1,2,1,3,NA,4,NA))

返回:

R語言邏輯型運(yùn)算的示例分析

以上是“R語言邏輯型運(yùn)算的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI