2016-02-25 1 views
0

Хочу сделать такой цикл с помощью R.петли и модульная операция в R

для г = 1 выход будет

1 
2 
3 

для г = 2 выход будет

2 
3 
1 

для i = 3 выход будет

3 
1 
2 

А именно: puts - последовательные целые числа. Это просто, когда целое число достигает 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,]) 
Смежные вопросы