0
votes

Pour boucle dans R pour trouver des doublons dans un vecteur unique sans fonctions intégrées

J'ai trouvé cela comme une question d'entrevue et je ne peux pas sembler travailler une solution. Vous ne pouvez utiliser aucune fonction R intégrée dans R.

for (i in 1:n){  #wasn't sure if this should be 2:n?
count <- count +1
  for (stuff in (count:n)){ 
    if (stuff){
      answer <- TRUE
      break #I thought this would break the entire code when it see's x[1] vs x[5] which is 77 duplicate
    }
  }
}
answer


4 commentaires

Voulez-vous obtenir la quantité de doublons? Ou voulez-vous obtenir pour chaque numéro le nombre de répétitions?


Qu'est-ce qui constitue une fonction R intégrée? si () et pour () sont à la fois techniquement intégrées dans les fonctions.


@ Santagoi.hurtado s'il y a une duplication, la réponse devrait être vraie. Je n'ai pas besoin du nombre de doublons ou de quel nombre est dupliqué. Je ne peux pas utiliser% en% car c'est une fonction R


@Danielo Désolé, j'aurais dû être plus clair, je peux utiliser si () et pour () mais pas ();% en% ou IS.Element ()


3 Réponses :


-1
votes

Cela devrait fonctionner:

for (i in x) {
  repeats <- length(x[x == i])
  if (repeats < 2) {

  } else {
    print(paste(i, "has duplicates"))
    break
  }
}


5 commentaires

Je suis d'accord que cela fonctionnera, mais je ne peux pas utiliser% en%. J'aime votre idée d'utiliser si (répétez <2) cependant, je vais travailler sur quelque chose de similaire. Si vous pouvez penser à un moyen sans% en%, je l'apprécierais


Pouvez-vous utiliser 'somme'?


Vous pouvez définir les "répétitions" dans la même boucle que répéter <- longueur (x [x == i]). Mais encore une fois, pouvez-vous utiliser la longueur ()?


L'utilisation de la somme et de la longueur est autorisée. La question de l'entrevue a déclaré «no% en% ou de fonctions de choix».


alors cela fonctionnera :) même boucle mais avec répéter <- longueur (x [x == i])



1
votes

Cela fonctionnera:

x <- c(77, 12, 4, 8, 77, 2, 4, 12)
answer <- FALSE
n <- length(x)
for(count in 1:n){
  for(compare in x[-count]){
    if(x[count] == compare){
      answer <- TRUE
      break()
    }
  }
  if(answer){break()}
}


2 commentaires

Cela semble accomplir la tâche, merci. Pouvez-vous expliquer ce que le "-" dans x [-Count] fait?


le minus signifie qu'il aura utilisé tout le vecteur x sans le "compte"



0
votes

Les éléments suivants: xxx

semble fonctionner et n'utilise pas non plus (code> aucun () , is.Element ou ou ou % dans% fonctions. Si vous voulez que votre enseignant devienne plus intelligent et apprenez la définition des fonctions «intégrées», vous pouvez répondre à cela :)

EDIT: Sinon, un bon algorithme peut être trouvé Il dans O (n) heure et o (1) espace supplémentaire .


0 commentaires