2017-04-14 3 views
0

La sortie lors de la vérification d'un répertoire vide avec R de list.files() est une chaîne de caractères ...Comment convertir une sortie list.files() en un int?

> list.files('/home/someDir') 
character(0) 

Mais je voudrais tester sa longueur et l'utiliser dans une structure de contrôle comme

> current <- '/home/someDir' 
> dirPick <- function(){ 
    tryCatch(
     if (length(list.files(current) > 0)) { 
     dirData <- current 
     } else { 
     dirData <- old 
     } 
    ) 
    } 

Mais l'objet retourné par list.files() ne se comporte pas comme je pense:

> list.files('/home/someDir') == 0 
logical(0) 


> as.numeric(list.files('/home/someDir')) == 0 
logical(0) 

Je ne sais pas, je comprends le différent entre un logique et un booléen, mais pourquoi cela n'agit-il pas comme un entier zéro?

Répondre

2

Essayez:

length(list.files('/home/someDir')) == 0 

La valeur character(0) indique certains comme une variable vide. C'est pourquoi vous ne pouvez pas le convertir en 0 sans length() attribut

+0

Ou '! Longueur (...)' bien que cela soit moins lisible. – Frank