11
votes

Comment l'opérateur de négation logique "!" travaux

Je n'essaie pas de résoudre un problème particulier, mais essayez d'apprendre R et de comprendre son opérateur de négation logique "!" Documenté à la page http: //stat.éthz. CH / R-Manuel / R-Devel / Bibliothèque / Base / HTML / LOGIC.HTML

Cela fonctionne pour moi lorsqu'il est utilisé en combinaison avec =, dans des expressions telles que: P>

Error in !x : invalid argument type


0 commentaires

3 Réponses :


15
votes

Tout d'abord, il est probablement préférable de ne pas penser à ! = comme ! active sur = , mais plutôt comme un opérateur binaire séparé.

en général, ! ne doit être appliqué qu'aux vecteurs booléens. Donc, c'est probablement plus comme ce que vous êtes après: xxx

noms (L)% in% x retourne un vecteur booléen le long des noms de La liste l indiquant si elles sont contenues dans x ou non. Enfin, j'ai évité l'utilisation de la liste comme une variable, car vous pouvez le voir également une fonction assez courante.


1 commentaires

Joran, merci beaucoup pour des éclaircissements et des explications, tout est logique pour moi maintenant.



8
votes

Tout d'abord, je pense que le ! dans ! = n'est pas le ! opérateur. C'est un opérateur distinct, ! = , ce qui signifie "différent de".

second, le ! L'opérateur est logique, la négation logique, et il doit être appliqué sur un vecteur logique: xxx

car les chiffres peuvent être contraints à logiques, il peut également être appliqué à un vecteur numérique. Dans ce cas, 0 sera considéré comme faux  et toute autre valeur que true : xxx

Dans votre exemple, vous essayez d'appliquer cet opérateur logique à une chaîne de caractères, qui soulève une erreur.

Si vous souhaitez sous-ensemble listes, cadres de données ou vecteurs par noms, indices ou conditions, Vous devriez lire et apprendre davantage sur la partie d'indexation de la langue R, décrite dans les manuels R et la plupart des livres et documents d'introduction.

Un moyen de sous-ensemble Une liste par noms pourrait être, par exemple: xxx


0 commentaires

11
votes

Je suis d'accord avec tout ce qui a dit par les deux autres affiches, mais je veux ajouter une autre chose que je dis toujours lorsque l'enseignement de R.

r fonctionne en ce sens qu'il évalue des déclarations de l'intérieur à l'extérieur et de chacune de ces déclarations courir dessus. Si vous avez déjà une erreur dans une déclaration intérieure, rien ne me demande que les extorieurs ne produisent rien. P>

Dans votre cas, on pourrait dire que vous avez deux déclarations: ! X code> et liste d'accès sur list code> via [ code>. p>

Si vous reproduisez le comportement de R, vous remarquez que ! x code> produit déjà l'erreur suivante: P>

> !x
Error in !x : invalid argument type


0 commentaires