R語言:循環

這里介紹五種R語言的循環語法,分別是:

  • for

  • if

  • repeat

  • which

  • while

for

samples<- c(rep(1:10))
samples
##  [1]  1  2  3  4  5  6  7  8  9 10
for(thissample in samples){
  print(thissample)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
for ( thissample in samples){
  str <- paste(thissample,"is current sample",sep = " ")
  print (str)
}
## [1] "1 is current sample"
## [1] "2 is current sample"
## [1] "3 is current sample"
## [1] "4 is current sample"
## [1] "5 is current sample"
## [1] "6 is current sample"
## [1] "7 is current sample"
## [1] "8 is current sample"
## [1] "9 is current sample"
## [1] "10 is current sample"
for( thissample in samples){
  if (thissample == 3)
    break
  str<-paste(thissample,"is current sample" , sep = " ")
  print (str)
}
## [1] "1 is current sample"
## [1] "2 is current sample"
for(thissample in samples){
  if (thissample %% 2 == 0)
    next 
  str<-paste(thissample,"is current sample",sep = " ")
  print(str)
}
## [1] "1 is current sample"
## [1] "3 is current sample"
## [1] "5 is current sample"
## [1] "7 is current sample"
## [1] "9 is current sample"
end<-length(samples)
begin <- end -2
for(thissample in begin:end){
  str<-paste(thissample,"is current sample",sep = " ")
  print(str)
}
## [1] "8 is current sample"
## [1] "9 is current sample"
## [1] "10 is current sample"

if

samples<-c(rep(1:10))
samples
##  [1]  1  2  3  4  5  6  7  8  9 10
for(thissample in samples){
  if (thissample %% 2 != 0)
    next
  else
    print(thissample)
}
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
ret<-ifelse(samples>6,2,1)
ret
##  [1] 1 1 1 1 1 1 2 2 2 2

repeat

total<-0
repeat{
  total<-total +1;
  print(total);
  if (total > 6)
    break;  
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
total
## [1] 7

which

which(letters == "h")
## [1] 8
data(BOD)
BOD
##   Time demand
## 1    1    8.3
## 2    2   10.3
## 3    3   19.0
## 4    4   16.0
## 5    5   15.6
## 6    7   19.8
which(BOD$demand == 16)
## [1] 4
x<-matrix(1:9,3,3)
x
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
which(x %% 3 == 0,arr.ind = TRUE) #返回位置
##      row col
## [1,]   3   1
## [2,]   3   2
## [3,]   3   3
which(x %% 3 == 0,arr.ind = FALSE) # 返回數
## [1] 3 6 9

while

x<-1
while(x<5){
  x<-x+1
  print(x)
}
## [1] 2
## [1] 3
## [1] 4
## [1] 5
x<-1
while(x<5){
  x<-x+1
  if(x == 3)
    break
  print(x)
}
## [1] 2
x<-1
while(x<5){
  x<-x+1
  if(x == 3)
    next
  print (x)
}
## [1] 2
## [1] 4
## [1] 5

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 可能有一種情況,當你需要執行一段代碼幾次。 通常,順序執行語句。 首先執行函數中的第一個語句,然后執行第二個語句,...
    yuanyb閱讀 1,763評論 0 0
  • 亙古頑石證天地, 千年王八觀史實。 不才書生猶握劍, 伏櫪老驥當有為。
    雅俗共賞Y閱讀 249評論 1 5
  • 1. 在每一階段,人心其實并不滿足當前,總有一些愿望緊緊地纏繞在你的心靈深處,或明張目膽地叫囂,或蠢蠢欲動的渴望,...
    如此且行閱讀 509評論 2 1