Remplacer NaN valeurs dans une liste avec zéro (0)
Bonjour cher j'ai un problème avec NaN
. Je travaille avec un vaste ensemble de données avec de nombreuses variables et ils ont NaN
. Les données comme ceci:
z=list(a=c(1,2,3,NaN,5,8,0,NaN),b=c(NaN,2,3,NaN,5,8,NaN,NaN))
J'ai utilisé cette commande pour forcer la liste de données d'image, mais j'ai obtenu ceci:
z=as.data.frame(z)
> is.list(z)
[1] TRUE
> is.data.frame(z)
[1] TRUE
> replace(z,is.nan(z),0)
Error en is.nan(z) : default method not implemented for type 'list'
J'ai forcé z, bloc de données, mais il n'était pas assez, peut-être il y a un formulaire pour modifier NaN
dans la liste. Merci pour votre aide. Ces données n'est qu'un exemple de mon fichier de données a 36000 observations et 40 variables.
Vous devez vous connecter pour publier un commentaire.
C'est un parfait cas d'utilisation de
rapply
.lapply
serait trop de travail, maisrapply
traite correctement avec des listes imbriquées dans cette situation.rapply
en actionQue vous ne semblent pas à l'esprit que vos données dans un dataframe, vous pouvez faire quelque chose de très vectorisées trop. Toutefois, cela ne fonctionnera que si chaque élément de la liste est de longueur égale. Je devine dans vos données (
36000/40 = 900
) que c'est le cas:Suivantes OP edit: à la Suite de votre édité le titre, cela devrait le faire.
unstack
vous donne automatiquement undata.frame
si le résultat est de longueur égale (contrairement au premier exemple, illustré ci-dessous).Vieille solution (par continuité).
Essayez ceci:
Note 1: Il semble à partir de votre post que vous souhaitez remplacer NaN 0. La sortie de
stack(z)
, il peut être sauvegardé dans une variable, puis remplacé à 0 et ensuite vous pouvezunstack
.Note 2: Aussi, depuis na.omettre supprime NA ainsi que NaN, j'ai aussi supposer que vos données ne contient pas de NA (à partir de vos données ci-dessus).
Si au début vous avez données.table 1-ligne de remplacement.
Mais gardez à l'esprit que les touches sont besoin d'être redéfini après que: