R, функция, которая превращает числовой вход c в переработанный числовой выход c, ограниченный верхним пределом - PullRequest
1 голос
/ 26 марта 2020

Как мне написать функцию f(v, n) (или использовать базовую функцию R), которая превращает цифру c вектор v в другую, основанную на n, коэффициенте рециркуляции (в отсутствие лучшего слова) , Например:

f(v = c(1,2,3,4,5), n = 1) #would yield c(1,2,3,4,5)
f(v = c(1,2,3,4,5), n = 2) #would yield c(1,2,1,2,1)
f(v = c(1,2,3,4,5), n = 3) #would yield c(1,2,3,1,2)
f(v = c(5,4,3,2,1), n = 3) #would yield c(2,1,3,2,1)
f(v = c(3,6), n = 3) #would yield c(3,3)

Самое близкое, что я получил, было использовать %%

1:5%%3 #giving me: [1] 1 2 0 1 2 - not quite what I want, at least some recycling.

1 Ответ

3 голосов
/ 26 марта 2020

Мы можем создать функцию как

f <- function(x, n) if(n ==1) x else (x - 1) %% n + 1
f(1:5, 1)
#[1] 1 2 3 4 5
f(1:5, 2)
#[1] 1 2 1 2 1

f(1:5, 3)
#[1] 1 2 3 1 2

f(5:1, 3)
#[1] 2 1 3 2 1

f(c(3, 6), 3)
#[1] 3 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...