133 votes

R - Obtenir le type de variable

J'aimerais récupérer une liste de variables globales à la fin de mon script et les parcourir par la suite. Voici mon code

 #declare a few sample variables
a<-10
b<-"Hello world"
c<-data.frame()

#get all global variables in script and iterate over them
myGlobals<-objects()
for(i in myGlobals){
 print(typeof(i))
}
 

Mon problème est que typeof (i) retourne toujours "caractère" même si a et c ne sont pas des variables de caractère. Comment puis-je obtenir le type de variable d'origine dans la boucle for?

122voto

James Points 24725

Vous devez utiliser get pour obtenir la valeur plutôt que le nom du caractère de l'objet renvoyé par ls :

 x <- 1L
typeof(ls())
[1] "character"
typeof(get(ls()))
[1] "integer"
 

Autrement, pour le problème tel que présenté, vous pouvez utiliser eapply :

 eapply(.GlobalEnv,typeof)
$x
[1] "integer"

$a
[1] "double"

$b
[1] "character"

$c
[1] "list"
 

1voto

Carl Witthoft Points 9799

Conçu pour faire essentiellement l'inverse de ce que vous vouliez, voici l'un de mes jouets:

  lstype<-function(type='closure'){
inlist<-ls(.GlobalEnv)
if (type=='function') type <-'closure'
typelist<-sapply(sapply(inlist,get),typeof)
return(names(typelist[typelist==type]))
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X