0
votes

Supprimer l'élément de la liste si le nombre est compris entre 750 et 850.

Voulez-vous résoudre en utilisant la boucle

x = list(20000,45,443,"Texas",680,410,"Chennai",121,799,190,810) 

 `  for (i in seq(x)){
  if(x[[i]]>750 & x[[i]]<850){
    x[[i]] <- NA }}`


0 commentaires

4 Réponses :


2
votes

Nous pouvons utiliser filtre code> xxx pré>

et voici quelques variantes de la même logique. p> xxx pré>


Si vous strong> avez strong> pour utiliser un pour code> boucle, voici une façon p> XXX PRE>

DATA FORT> P>

num_list = list(20000,45,443,"Texas",680,410,"Chennai",121,799,190,810)


1 commentaires

@Natats a ajouté une option avec pour boucle.



0
votes

Nous pouvons utiliser sapply code> pour faire ce xxx pré>


ou en utilisant acadrable code>, où nous bougeons via le Liste code>, vérifier d'abord s'il s'agit d'une classe code> numérique de code> et uniquement si vous vérifiez que le nombre est compris entre 750 et 850, pour créer une liste code> de vecteurs logiques, qui Nous irréaliste code> à un vecteur code>, nier (! code>) pour changer true / faux code> à faux / vrai CODE> et utilisez-le pour sous-ensemble la liste P>

y <- list()
for(i in seq_along(x)) {
   if(!(is.numeric(x[[i]]) && (x[[i]] > 750 & x[[i]] < 850))){
       y <- c(y, x[[i]])
 }


8 commentaires

Qu'en est-il de Lapply @akrun


@Natats a ajouté une option avec pour boucle


Son ok @Akrun veut résoudre ce code de deux manières que l'une est pour la boucle et une autre est la fausse


@Natats s'il vous plaît vérifier ma dernière option avec pour boucle


@Atats mises à jour avec pour boucle et acadelé


J'ai eu une réponse @akrun mais le problème est que c'est si déroutant de comprendre ...... pouvez-vous écrire un code aussi simple que possible si c'est possible


@Naats j'ai ajouté une description. J'espère que cela aide


Au lieu de supprimer la valeur et si nous voulons ajouter 5 @Akrun comme si la valeur comprise entre 750 et 800 Add 5



1
votes

Si vous souhaitez utiliser pour code> boucle, il s'agit d'une solution, où vous pouvez définir une pièce indésirable sur na code> et dynamisez-les via ! is.na (x) code>.

Il existe certaines erreurs de syntaxe dans votre code pour code> Code de boucle. J'ai fait une modification minimale pour conserver la partie principale de votre code, mais j'ai ajouté une ligne de plus après la boucle pour code> pour atteindre votre objectif. P>

> x
[[1]]
[1] 20000

[[2]]
[1] 45

[[3]]
[1] 443

[[4]]
[1] "Texas"

[[5]]
[1] 680

[[6]]
[1] 410

[[7]]
[1] "Chennai"

[[8]]
[1] 121

[[9]]
[1] 804

[[10]]
[1] 190

[[11]]
[1] 815


18 commentaires

Au lieu de supprimer la valeur et si nous voulons ajouter 5 @thomasls codage


@Atats Vous voulez dire ajouter 5 aux valeurs entre 750 et 850 ou remplacer ces valeurs de 5? Pour l'ancien cas, si (x [[i]]> 750 & x [[[I]] <850) {x [[I]] <- x [[I]] + 5} , pour ce dernier cas, si (x [[i]]> 750 & x [[[I]] <850) {x [[I]] <- 5}


sa montrant comme l'indice hors limites ................. Ajout de moyens si 750, la valeur doit être de 755 comme ça @THOMASLSCODING


@Naats j'ai ajouté un nouvel exemple dans ma réponse concernant l'ajout 5 , vous verrez cela fonctionne bien


Nice ça marche ..... Et si nous voulons remplacer la chaîne comme 0 @thomaslScoding


@Naats Vous voulez dire numérique 0 ou caractère "0" ? Vous pouvez essayer pour (i in seq (x)) {si (is.character (x [[i]])) {x [[I]] <- 0}} pour numérique ou < code> pour (i in seq (x)) {si (is.character (x [[i]])) {x [[i]] <- "0"}} pour le caractère


Comment écrire ces conditions dans la fonction nerveuse @thomaslscoading


@Natats acadrély (x, fonction (v) ifelse (is.character (v), 0, v))


Désolé thomaslscharge non celui-ci d'abord la suppression si la condition Mets 750 & X <850 à l'aide de la péniche


@Naats z <- marcly (x, fonction (v) ifelse (v> 750 & v <850, na, v)); x <- z [! is.na (z)]


au lieu de NA, pouvons-nous supprimer IfelSe lui-même .... est-ce possible @thomoslscoding


@Natats essaie x <-filter (longueur, académique (x, fonction (V) si (V> 750 & v <850) null SINE V)) , il peut supprimer des valeurs comprises entre 750 et 850


@Naats labraque fonctionne bien pour moi. Peut-être que vous devez nettoyer l'environnement global avant d'exécuter le code à chaque fois, sinon votre entrée si de quelque part ailleurs


c'est cool ..... avez-vous des idées alternatives @thomaslscoding


@Atats je n'ai aucune autre idée


@Aats bienvenue! Si vous souhaitez accepter ma réponse, vous pouvez cliquer sur l'icône cocher sous l'option de vote, votre question sera marquée comme répondit dans SO SYSTEM


ok @thomaslscoding mais j'ai un doute ici y nous utilisons SEQ une raison particulière est là


@Naats SEQ (n) générer une séquence à partir de 1 à n , sinon vous n'avez qu'une seule valeur n transmis à sapply ()



1
votes
x <- list(20000,45,443,"Texas",680,410,"Chennai",121,799,190,810)
newx <- list()
for (i in x){
  if (is.numeric(i) & (i < 750 | i > 850)){
    print(i)
    newx <- c(newx,i)
  }
}
newx

0 commentaires