2010-05-16 70 views
19

是否有與可在R控制檯內使用的unix less命令等效的內容?等效於R控制檯內的unix「less」命令

+0

你試圖看看文件系統或R環境中的東西(我認爲後者)? – Shane 2010-05-16 16:41:45

+1

在R環境中。例如,如果我打印一箇中等大小的數據框,我希望能夠滾動瀏覽它。 – fmark 2010-05-17 00:02:03

回答

31

還有page()這在尋呼機上顯示一個對象的表示,就像少一樣。

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

完美無瑕,正是我一直在尋找的! – fmark 2010-10-02 08:05:00

+2

當我在Windows 8的RStudio中運行'page(data,method =「print」)'時,我得到一個提示「你想如何打開這種類型的文件?只有選項「在商店中查找應用程序」。其他人看到這個,我怎麼才能使它工作? – yic 2015-01-10 19:59:32

11

不是。有明確的顯示對象

  • head()tail()用於顯示開始和對象
  • print()的命令,只是它的名字,然後回做同樣的
  • summary()的依賴簡明摘要關於其結構

和多個對象

  • str()less的等價物與語言和系統有點正交。如果Unix shell爲您提供less來查看文件的內容(推測爲ascii編碼),它無法知道所有類型。

    R是不同的,因爲它知道對象類型,這就是爲什麼summary()以及整個建模框架更合適。

    後續編輯:另一種可能性是由edit()以及edit.data.frame()提供。

  • +0

    感謝您提供豐富的答案。我不同意「少」是不合適的 - 我少用的主要功能是在控制檯中滾動字符串緩衝區。 R控制檯輸出大量字符串緩衝區。我想也許有可能在這裏使用緩衝區滾動功能。 – fmark 2010-05-16 05:02:00

    +1

    你總是可以使用'system(「less」)'...當然,如果你使用任何* NIX系統... – aL3xa 2010-05-16 05:32:59

    +1

    fmark:另一種可能性是由'edit()'和'edit.data.frame ()'你可以試試。 – 2010-05-16 11:34:36

    6

    我將打印輸出保存到一個文件中,然後使用編輯器或less對其進行讀取。

    鍵入的R中殼下面

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

    然後:

    less Routput.txt 
    
    +0

    當您想要滾動瀏覽大型數據集的str()時(頁面()不適用於此),效果很好) – dahved 2017-10-24 13:37:00

    0

    如果該文件已經在磁盤上,那麼你可以使用file.show

    1

    你可能會喜歡我的小玩具在這裏:

    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版權屬於我,而不是迪斯尼blahblah自由使用,再利用,編輯,灑在你的麥片等