2010-05-16 8 views
19

Existe-t-il une commande équivalente à la commande unix less pouvant être utilisée dans la console R?Equivalent à la commande unix "less" dans la console R

+0

Êtes-vous essayer de regarder les choses dans le système de fichiers, ou dans l'environnement R (je suppose que le dernier)? – Shane

+1

Dans l'environnement R. Par exemple, si je "imprime" un dataframe de taille moyenne, je veux pouvoir le faire défiler. – fmark

Répondre

31

Il y a aussi page() qui affiche une représentation d'un objet dans un pager, comme moins.

dat <- data.frame(matrix(rnorm(1000), ncol = 10)) 
page(dat, method = "print") 
+1

Parfait, exactement ce que je cherchais! – fmark

+2

Lorsque j'exécute 'page (data, method =" print ")' dans RStudio dans Windows 8, je reçois une invite "Comment voulez-vous ouvrir ce type de fichier?" avec seulement l'option "Rechercher une application dans le magasin". Est-ce que les autres voient cela, comment puis-je le faire fonctionner? – yic

11

Pas vraiment. Il y a les commandes

  • head() et tail() pour montrer le début et la fin des objets
  • print() pour montrer explicitement un objet, et juste son nom suivi d'un retour fait la même
  • summary() pour un résumé concis qui dépend sur l'objet
  • str() pour sa structure

et plus. Un équivalent pour less serait un peu orthogonal au langage et au système. Lorsque le shell Unix vous offre less pour afficher le contenu d'un fichier (qui est supposé être codé en ASCII), il ne peut pas connaître tous les types. R est différent en ce sens qu'il connaît les types d'objets, c'est pourquoi summary() - ainsi que l'ensemble du cadre de modélisation - sont plus appropriés.

modifier Suivi: Une autre possibilité est fournie par edit() ainsi que edit.data.frame().

+0

Merci pour la réponse informative. Je ne serais pas d'accord sur le fait que "moins" serait inapproprié - la fonction principale pour laquelle j'utilise moins est de faire défiler les tampons de chaîne dans une console. La console R génère beaucoup de tampons de chaîne. J'ai pensé que peut-être il pourrait y avoir une utilisation ici pour la fonctionnalité de défilement de tampon. – fmark

+1

Vous pouvez toujours utiliser 'system (" less ")' ... bien sûr, si vous utilisez l'un des * systèmes NIX ... – aL3xa

+1

fmark: une autre possibilité est fournie par 'edit()' et 'edit.data.frame() 'que vous pourriez essayer. –

6

Je sauvegarde la sortie d'impression dans un fichier, puis je la lis à l'aide d'un éditeur ou less.

Tapez la commande suivante dans R

sink("Routput.txt") 
print(varname) 
sink() 

Puis dans une coquille:

less Routput.txt 
+0

Fonctionne bien lorsque vous voulez faire défiler la str() d'un grand ensemble de données (page() ne fonctionne pas pour cela) – dahved

0

Si le fichier est déjà sur le disque, vous pouvez utiliser file.show

1

Vous pourriez aimer mon petit jouet ici:

short <- function(x=seq(1,20),numel=4,skipel=0,ynam=deparse(substitute(x))) { 
ynam<-as.character(ynam) 
#clean up spaces 
ynam<-gsub(" ","",ynam) 
#unlist goes by columns, so transpose to get what's expected 
if(is.list(x)) x<-unlist(t(x)) 
if(2*numel >= length(x)) { 
    print(x) 
    } 
    else { 
     frist=1+skipel 
     last=numel+skipel 
     cat(paste(ynam,'[',frist,'] thru ',ynam,'[',last,']\n',sep="")) 
     print(x[frist:last]) 
     cat(' ... \n') 
     cat(paste(ynam,'[',length(x)-numel-skipel+1,'] thru ', ynam, '[', length(x)-skipel,']\n',sep="")) 
     print(x[(length(x)-numel-skipel+1):(length(x)-skipel)]) 
     } 
} 

blahblah copyright par moi, pas Disney blahblah gratuit pour une utilisation, la réutilisation, le montage, saupoudrage sur vos Wheaties, etc.

Questions connexes