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 }}`
4 Réponses :
Nous pouvons utiliser et voici quelques variantes de la même logique. p> Si vous strong> avez strong> pour utiliser un filtre code>
pour code> boucle, voici une façon p> XXX PRE> num_list = list(20000,45,443,"Texas",680,410,"Chennai",121,799,190,810)
@Natats a ajouté une option avec pour code> boucle.
Nous pouvons utiliser ou en utilisant sapply code> pour faire ce
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 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]])
}
Qu'en est-il de Lapply @akrun
@Natats a ajouté une option avec pour code> 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 code> boucle
@Atats mises à jour avec pour code> boucle et acadelé code>
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
Si vous souhaitez utiliser Il existe certaines erreurs de syntaxe dans votre code 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>. 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
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} code> , pour ce dernier cas, si (x [[i]]> 750 & x [[[I]] <850) {x [[I]] <- 5} code>
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 code>, 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 code> ou caractère "0" code>? Vous pouvez essayer pour (i in seq (x)) {si (is.character (x [[i]])) {x [[I]] <- 0}} code> pour numérique ou < code> pour (i in seq (x)) {si (is.character (x [[i]])) {x [[i]] <- "0"}} code> 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)) code>
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)] code>
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)) code>, il peut supprimer des valeurs comprises entre 750 et 850
@Naats labraque code> 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 code> cocher code> sous l'option de vote, votre question sera marquée comme répondit code> dans SO SYSTEM
ok @thomaslscoding mais j'ai un doute ici y nous utilisons SEQ une raison particulière est là
@Naats SEQ (n) code> générer une séquence à partir de 1 code> à n code>, sinon vous n'avez qu'une seule valeur n code> transmis à sapply () code>
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