2017-02-27 94 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)