comment déterminer si un vecteur de caractères est un vecteur numérique ou entier valide

J'essaie de transformer une liste imbriquée structure dans un dataframe. La liste ressemble à la suivante (c'est sérialisé données de analysée JSON lire en utilisant le réacteur package).

  myList <- list(object1 = list(w=1, x=list(y=0.1, z="cat")), object2 = list(w=NULL, x=list(z="dog")))

EDIT: mon premier exemple de données était trop simple. Les données réelles sont en lambeaux, ce qui signifie que pas toutes les variables existent pour chaque objet, et que certains des éléments de la liste sont NULLES. J'ai édité les données pour tenir compte de cela.

unlist(myList) fait un excellent travail de manière récursive l'aplatissement de la liste, et je peux alors utiliser lapply pour aplatir tous les objets joliment.

  flatList <- lapply(myList, FUN= function(object) {return(as.data.frame(rbind(unlist(object))))}) 

Et enfin, je peux le bouton de plyr::rbind.fill

  myDF <- do.call(plyr::rbind.fill, flatList)
  str(myDF)

  #'data.frame':    2 obs. of  3 variables:
  #$ w  : Factor w/2 levels "1","2": 1 2
  #$ x.y: Factor w/2 levels "0.1","0.2": 1 2
  #$ x.z: Factor w/2 levels "cat","dog": 1 2

Le problème, c'est que w et x.y sont maintenant interprétés comme des caractères vecteurs, qui, par défaut, obtenir analysée comme facteurs dans le dataframe. Je crois que unlist() est le coupable, mais je ne peux pas comprendre d'une autre manière récursive aplatir la structure de la liste. Une solution de contournement serait de post-traiter le dataframe, et attribuer des types de données ensuite. Quelle est la meilleure façon de déterminer si un vecteur est un numérique valide ou entier vecteur?

source d'informationauteur Andrew Barr