2012-04-30 10 views
14

ワークスペース内のすべてのオブジェクトをリストして印刷する方法がわかりません。私はそれらをすべて見て、何が起こっているのか理解したいと思います。たとえば、ls()は30個のオブジェクトを提供します。どのように個別に入力するだけでなく、それらをすべて表示することも可能です。とても簡単だと思われますが、その解決法はおそらく非常に恥ずかしいでしょう。私が一番近かったのはls.str()で、オブジェクトをループするという考えがありました。ワークスペース内のすべてのオブジェクトを印刷する

これはデータフレーム用ではありません。私は、データがない機能を満載したワークスペースを持っています。どんなものが参照されているのか理解しています。

+0

関連:http:// stackoverflow。com/questions/1386767/are-there-any-good-r-object-browser – GSee

+0

+1ようこそ。 – gauden

答えて

23

ls()のすべてのオブジェクトに対して「プロンプトに入力したら表示されますか」という意味で「表示」を意味しますか?もしあなたが1000x10000の行列を持っていたら、それでも印刷したいのですが?私は個人的に好きですls.str() - 私はそれがすべての良い簡潔な概要を提供し、私がうまく言及したケースを処理すると思います。

あなたは基本的には、「表示」にプロンプ​​ト上で各入力の意味でのすべてのオブジェクトをしたい場合は、私はループお勧め:ls()は、変数名の文字ベクトルを返すので

for (obj in ls()) { print(get(obj)) } 

を、I get(obj)を使用して、名前がobjである変数を取得する必要があります。

変数名も印刷するために、これを変更することができます。一例として、

for (obj in ls()) { cat('---',obj,'---\n'); print(get(obj)) } 

> a <- 1 
> b <- LETTERS[1:10] 
> c <- data.frame(a=LETTERS[1:10],b=runif(10)) 
> for (obj in ls()) { cat('---',obj,'---\n'); print(get(obj)) } 
--- a --- 
[1] 1 
--- b --- 
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" 
--- c --- 
    a   b 
1 A 0.1087306 
2 B 0.9577797 
3 C 0.8995034 
4 D 0.1434574 
5 E 0.3548047 
6 F 0.1950219 
7 G 0.1453959 
8 H 0.4071727 
9 I 0.3324218 
10 J 0.4342141 

これはしかし欠点を持っている - あなたがそこに今objありますls()を呼び出す次回。私はいくつかの回避策があると確信しています。

とにかく、大きなオブジェクトを扱う方法についてはまだls.str()が好きだと思いますが(私はたくさんの巨大な(数百万の要素)マトリックスで作業するので、それは私の好みです)。

+1

注意:実際にRとのセッションが長い場合、 'for(obj in ls()){print(get(obj)}}'を実行すると、Rがフリーズすることがあります。 – andi

+0

リストを印刷する方法はありますか選択したオブジェクトのワークスペースからの表示 –

6

本当にあなたのすべてのオブジェクトのすべての内容を印刷したくありません。 matrix(1:1e5,100,1000) :-(印刷を想像してみてくださいsummarytablestrのような有用なRツールがあります。これは一般的に、それが何で、何をしたいのかを知るためのデータオブジェクトについて十分に分かります。
私は自分のために、lstype(objtype='closure')のような名前でいくつか書いていますが、指定されたオブジェクトのすべてをリストしています種類が

8

RStudioを使用すると、環境内のすべてのオブジェクトを表示し、それぞれのオブジェクトとの直接的なやりとりを可能にすることがわかりました。要求するms。これは特に、多数のオブジェクトのビューを提供するのに便利です。

+0

RStudioはとても感謝しています。 – Rico

0

ワークスペースに1つ以上の大きなオブジェクト(ベクトル、行列、リストなど)がある場合は、次のコードでコンパクトな出力が得られます。

for (obj in ls()) { 
    cat('---',obj,'---\n'); 
    if (class(get(obj)) == 'matrix' ){ 
    print(get(obj)[1:min(ncol(get(obj)),10),1:min(ncol(get(obj)),10)]) 
    }else if (class(get(obj)) == 'numeric' | class(get(obj)) == 'integer' ){ 
    print(get(obj)[1:min(length(get(obj)),10)]) 
    }else if(class(get(obj)) == 'list'){ 
    for (i in 1:length(get(obj))){ 
     if (class(get(obj)) == 'matrix' ){ 
     print(get(obj)[[i]][1:min(ncol(get(obj)[[i]]),10),1:min(ncol(get(obj)[[i]]),10)]) 
     }else if (class(get(obj)[[i]]) == 'numeric' | class(get(obj)[[i]]) == 'integer' ){ 
     print(get(obj)[[i]][1:min(length(get(obj)[[i]]),10)]) 
     }else{ 
     print(get(obj)[[i]]) 
     } 
    } 
    }else{ 
    print(get(obj)) 
    } 
} 
関連する問題