R語言邏輯型運算的實現_第1頁
R語言邏輯型運算的實現_第2頁
R語言邏輯型運算的實現_第3頁
R語言邏輯型運算的實現_第4頁
R語言邏輯型運算的實現_第5頁
已閱讀5頁,還剩2頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第R語言邏輯型運算的實現目錄一、邏輯型向量與比較運算二、邏輯運算三、邏輯運算函數

一、邏輯型向量與比較運算

邏輯型是R的基本數據類型之一,只有兩個值TRUE和FALSE,缺失時為NA。

邏輯值一般產生自比較,如

sele-(log10(15)print(sele)

返回:

向量比較結果為邏輯型向量。如

c(1,3,5)2

返回:

(1:4)=(4:1)

返回:

與NA比較產生NA,如

c(1,NA,3)2

返回:

NA==NA

返回:

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

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

返回:

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

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

返回:

比較運算符包括:====!=%in%

分別表示小于、小于等于、大于、大于等于、等于、不等于、屬于。要注意等于比較用了兩個等號。

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

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

返回:

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

##[1]FALSETRUE

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

##[1]FALSETRUE

c(NA,3)%in%c(NA,3,4)

##[1]TRUETRUE

函數match(x,y)起到和x%in%y運算類似的作用,但是其返回結果不是找到與否,而是對x的每個元素,找到其在y中首次出現的下標,找不到時取缺失值,如

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

返回:

二、邏輯運算

為了表達如x0而且x1,x0或者x1之類的復合比較,需要使用邏輯運算把兩個比較連接起來。邏輯運算符為,|和!,分別表示同時成立、兩者至少其一成立、條件的反面。比如,設age=3表示嬰兒,sex==女表示女性,

則age=3sex==女表示女嬰,

age=3|sex==女表示嬰兒或婦女,

!(age=3|sex==女)表示既非嬰兒也非婦女。

為了確定運算的先后次序可以用圓括號()指定。

用xor(x,y)表示x與y的異或運算,即值不相等時為真值,相等時為假值,有缺失值參加運算時為缺失值。

邏輯向量與邏輯標量之間的邏輯運算,兩個邏輯向量之間的邏輯運算規則遵從一般R向量間運算規則。

在右運算符是缺失值時,如果左運算符能夠確定結果真假,可以得到非缺失的結果。例如,TRUE|NA為TRUE,FALSENA為FALSE。

不能確定結果時返回NA,比如,TRUENA為NA,FALSE|NA為NA。

和||分別為短路的標量邏輯與和短路的標量邏輯或,僅對兩個標量進行運算,如果有向量也僅使用第一個元素。一般用在if語句、while語句中,且只要第一個比較已經決定最終結果就不計算第二個比較。例如

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

由于其中的sqrt(-1)部分不會執行,結果返回:

三、邏輯運算函數

因為R中比較與邏輯運算都支持向量之間、向量與標量之間的運算,所以在需要一個標量結果時要特別注意,后面講到的if結構、while結構都需要邏輯標量而且不能是缺失值。這時,應該對缺失值結果單獨考慮。

若cond是邏輯向量,用all(cond)測試cond的所有元素為真;用any(cond)測試cond至少一個元素為真。cond中允許有缺失值,結果可能為缺失值。如

c(1,NA,3)2

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

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

all(NA)

any(NA)

返回:

函數which()返回真值對應的所有下標,如

which(c(FALSE,TRUE,TRUE,FALSE,NA))

which((11:15)12)

返回:

函數identical(x,y)比較兩個R對象x與y的內容是否完全相同,結果只會取標量TRUE與FALSE兩種。如

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

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

因為前一向量是整數型,后一向量是實數型,結果返回:

函數all.equal()與identical()類似,但是在比較數值型時不區分整數型與實數型,而且相同時返回標量TRUE,但是不同時會返回一個說明有何不同的字符串。如

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

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

返回:

函數duplicated()返回每個元素是否為重復值的結果,如:

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

返回:

用函數unique()可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論