R語言中ifelse、which、%in%的用法詳解

ifelse、which、%in%是R語言裡極其重要的函數,以後會經常在別的程序中看到。

ifelse

ifelse是if條件判斷語句的簡寫,它的用法如下:

ifelse(test,yes,no)
參數 描述
test 一個可以判斷邏輯表達式
yes 判斷為 true 後返回的對象
no 判斷為 flase 後返回的對象

舉例:

x = 5
ifelse(x,1,0)

如果x不等於0,就返回1,等於0就返回0。

which

which 返回條件為真的句柄,給正確的邏輯對象返回一個它的索引。

which(test,arr.ind=FALSE)

test 必須是邏輯對象,邏輯數組。

舉例:

which(LETTERS == "R")

%in%

%in% 判斷 前面的對象是否在後面的容器中

element %in% list veator
1 %in% c(1:3)

補充:R語言:if-else條件判斷及any、all、na.omit使用方法

基本結構展示:

if (7<10) {
  print("Seven is less than ten")
} else{
  print("seven is more than ten")
}

實例演示:

Titanic=read.csv("https://goo.gl/4Gqsnz")  #從網絡讀取數據

1. any()

#any代表隻要有任一值符合,即為TRUE
if (any(titanicC$Age>70)) {                                              
  print("there are passengers older than 70")
} else{
  print("no one is older than 70")
}

2. all()

#所有都滿足才true
if (all(titanicC$Age>10)) {
  print("all passengers older than 10")
} else{
  print("there are passengers younger than 10")
}

3. na.omit()

#放的位置決定是刪除單一變量缺失值,還是刪除任何變量缺失值
if (any(na.omit(titanic$Age==100))) {
  print("there are passengers aged 100")
} else{
  print("there are no passengers aged 100")
}                                                                                 
#數據庫中隻要有missing的記錄都刪掉
if (any(titanic$Age==80, na.rm=TRUE)) {
  print("there are passengers aged 80")
} else{
  print("there are no passengers aged 80")
}       
#Age這個變量有missing的記錄刪掉,其他變量有missing可以保留

4. else if 寫更重復的語句

x=100
y=10
if(x<y){
  print("AA")
} else if(x==y){
  print(BB)
} else{
  print(CC)
}

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。