2016-02-25 32 views
0

我想用R.迴路和模運算中的R

做出這樣的循環,其中i = 1個輸出將是

1 
2 
3 

對於i = 2輸出將是

2 
3 
1 

對於i = 3的輸出將是

3 
1 
2 

即是out投入是連續的整數。正是當整數達到4時,它返回1並繼續。我想我必須使用模塊化操作,我該怎麼做?

回答

3

如果你有

a <- 1:3 

的值,如果i,你得到的序列與

f <- function(i) (a+i+1) %% length(a) +1 
f(1) 
# [1] 1 2 3 
f(2) 
# [1] 2 3 1 
f(3) 
# [1] 3 1 2 
f(4) 
# [1] 1 2 3 

請注意,它重新開始4

2

這是我的解決方案:

f <- function(i) { x <- i:(i+2) %% 3; x[x==0] <- 3; x } 
for (i in 1:5) print(f(i)) 

這是第二個解決方案:

r <- matrix(c(3,1,2, 1,2,3, 2,3,1),3) 
for (i in 1:5) print(r[i %% 3 + 1,])