2017-02-27 1 views
0

J'ai six cartes dans l'ordre suivant: 9,8,5,10,2,6 Je veux écrire un code qui va me donner la prochaine valeur de la liste et une fois tapé le dernier sera de retour au début à nouveau.Obtenir la valeur suivante à partir de tapé

J'ai essayé de le faire avec « 2 » (vouloir obtenir « 6 » comme résultat) et a écrit:

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

Cependant, il ne fonctionne pas du tout:/Toute aide serait appréciée

+1

Vous voulez une boucle sans fin? –

+1

Utilisez 'cards [o %% 6]' pour l'enrouler. C'est le module. –

Répondre

0

Essayez cette

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) 

vraiment comme la suggestion de module dans le commentaire ci-dessus si vous souhaitez utiliser à la place

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