2017-02-27 109 views
0

我有以下顺序的六张卡片:9,8,5,10,2,6 我想编写一个代码,该列表将给出列表中的下一个值,并且在键入最后一个值时返回再次开始。从输入中获取下一个值

我试着用“2”(希望得到“6”的结果)这样做,并写道:

cards <- c(9,8,5,10,2,6) 
o <- 1:6 
if(karty[o] == 2) cat(karty[o+1]) 

但是它不工作:/任何帮助,将不胜感激

+1

你想要一个无限循环? –

+1

使用'cards [o %% 6]'让它环绕。这是模数。 –

回答

0

试试这个

cards_fun <- function(val){ 
    if (val %in% cards[1:(length(cards)-1)]) ind = which(cards==val)+1 else if (val %in% cards[length(cards)]) ind = 1 
    cards[ind] 
} 
cards_fun(9) 
cards_fun(6) 

我真的很喜欢在上面的评论模量的建议,如果你想使用,而不是

cards_fun2 <- function(val){ 
o <- 1:length(cards); cards[(o%%length(cards))[cards %in% val]+1] 
} 
cards_fun2(9) 
cards_fun2(6)