L'aide d'appliquer la fonction sur une matrice avec NA entrées
Je lire des Données à partir d'un fichier csv. Si je vois ce fichier dans R, j'ai:
V1 V2 V3 V4 V5 V6 V7
1 14 25 83 64 987 45 78
2 15 65 789 32 14 NA NA
3 14 67 89 14 NA NA NA
Si je veux que la valeur maximale dans chaque colonne, j'utilise ceci:
apply(df,2,max)
et voilà le résultat:
V1 V2 V3 V4 V5 V6 V7
15 67 789 64 NA NA NA
mais il fonctionne sur la colonne, qui n'a pas de NA
. Comment puis-je changer mon code, pour comparer des colonnes avec NA
trop?
OriginalL'auteur TangoStar | 2013-09-16
Vous devez vous connecter pour publier un commentaire.
Vous avez juste besoin d'ajouter
na.rm=TRUE
s'appliquent à votre appel.Remarque: Ce n'assument chaque colonne a au moins un point de données. Si l'on n'a pas
sum
sera de retour0
.À MODIFIER SELON LE COMMENTAIRE
fft
ne dispose pas d'unna.rm
argument. Par conséquent, vous aurez besoin d'écrire votre propre fonction.Par exemple:
apply(df,2,fft,na.rm=TRUE)
j'obtiens une erreur:Error in FUN(newX[, i], ...) : unused argument(s) (na.rm = TRUE)
Il semble qu'il ne fonctionne pas avec la FFT ( avec d'autres comme max,...), il fonctionne très bienRegardez
?apply
: les arguments après le PLAISIR (par exemple,max
oufft
) sont transmis à l'AMUSEMENT. Etfft
ne dispose pas d'unna.rm
paramètre, c'est pourquoi vous obtenez une erreur. Vous pouvez utiliserna.omit()
sur la première colonne, puisfft
.grâce dayana 🙂 comment puis-je la mettre en œuvre avec pour() ?
C'est Dayne - pas Dayana - mais je ne suis pas sûr de ce que vous entendez. Pourquoi voudriez-vous d'utiliser une boucle for, lorsque s'appliquent les œuvres?
OriginalL'auteur dayne
Une autre option:
EDIT: le code ci-dessus peut échouer si
apply()
retourne une matrice au lieu d'une liste. Et ce sera le cas si il n'y a pasNA
s par exemple. Le code ci-dessous correctifs:Intéressant, il n'est pas nécessaire de définir
simplify=FALSE
, comme le résultat detapply()
ne seront simplifiées sina.exclude()
retourne une colonne par colonne; et dans ce cassapply
fonctionne de la même manière.OriginalL'auteur Ferdinand.kraft
Une autre option, ce sera le retour de
-Inf
si tous les éléments de col sont NAOriginalL'auteur Metrics
Cela pourrait être un résultat d'une version postérieure, mais vous pouvez réellement faire:
qui vous permettra de revenir un vecteur ou, de manière équivalente:
qui vous permettra de revenir une liste. Notez que chaque fois que l'une des colonnes dans le df est un personnage qu'il va échouer le retour de tous NA. Dans ce cas, vous pouvez avoir besoin de faire un avant de choisir l'un des objectifs variables.
OriginalL'auteur r0mer0m
Une autre option est d'utiliser les éléments suivants:
na.omettre(df) suffit d'enlever incomplète des cas, de chaque colonne de votre bloc de données df et puis le appliquer() fonction du rendement, la valeur max pour chacune des colonnes.
OriginalL'auteur Sadiaz