2017-03-15 9 views
0

私はRの問題に直面しています。セックス、コレクションの瞬間、家族に応じて、私の大きな種のテーブルの一連のサブセットの後に一定量のデータフレームを作成しましたetc ...私はそれらをデータセット/ csv /ディレクトリに.csvファイルとして保存しました。あなたが想像するように、かなり混乱します。そこで私は、これらのデータフレームをrオブジェクトとして保存した後、別のRMarkdownファイルで解析する際に一意のオブジェクトとしてロードできるリストとして保存すると考えました。これにより、.csvファイルを読み込む際の間違いを避けることができます。また、/ csvディレクトリに正しいファイルを検索して読み込むことに怒りを感じます。名前の環境でオブジェクトのリストを保存しますR

So.無駄なオブジェクトを削除した後、私はこのような状況に陥ります(データフレームが増えます)。

my_list <- replicate(n = 10, expr = {data.frame(x = rnorm(50), y = rnorm(50))}, simplify = F) 

names(my_list) <- c(paste("ciao", c(1:10))) 
list2env(my_list ,.GlobalEnv) 

明らかにデータフレームの名前はciao 1,2などではありませんが、お互いに異なるものです。 は、今私は、その名前の各オブジェクトを一覧表示し、命名「戻ってくる」のが好き

my_list2 <- list() 
for (i in seq_along(ls())) { 
    my_data[["The name of i-th object"]] <- list="i-th object" 
} 

ような何かそしてここで私はこの問題に直面します。 seq_alongから取得した、その位置を基準にしたls()を使って、i番目のオブジェクトの名前だけを呼び出すにはどうすればよいですか? ヘルプページとこのサイトや他のウェブサイトで検索しましたが、何も見つかりませんでした。

ありがとうございました。 シモン。ここ

+0

私をチェックアウトします[this post](http://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames)への回答。私はそれがこの状況で役立ち、解決策を提供するかもしれないと思う。 – lmo

+0

なぜグローバル環境で別々のオブジェクトを作成していますか?彼らがリストに含まれている場合は、そこに残しておきます。何らかの不明な理由がある環境でそれらを必要とする場合、これらのオブジェクトだけを保持する別の環境にそれらを配置します。 – Roland

+0

@Roland。私の元のファイルには別々のオブジェクトがあります。質問にあるのは単なる例だった。 –

答えて

2

は、いくつかのアプローチである:

1)

my_list2 <- mget(ls()) 

または多分をMGET:

my_list2 <- mget(ls(), .GlobalEnv) 

2)eapply

my_list2 <- eapply(.GlobalEnv, identity) 

3)getリストをインクリメンタルに拡張することは、パフォーマンスの観点からは推奨されませんが、オブジェクトが少ない場合は重要ではありません。ちょうどget(nm)get(nm, .GlobalEnv) isntead使用することができます

nms <- ls() 
my_list2 <- list() 
for(nm in nms) my_list2[[nm]] <- get(nm) 

3A)と同様に(3)が、数値インデックスを使用しています。

nms <- ls() 
my_list2 <- list() 
for(i in seq_along(nms)) my_list2[[nms[i]]] <- get(nms[i]) 

図3b)はまた取得使用していますが、forループなし:

Map(get, ls()) 

図3c)は、明示的に環境を指定するには、次の

sapply(ls(), get, .GlobalEnv, simplify = FALSE) 

:彼らはファイルから来る場合はread.tableread.csvを使用して、リストに直接それらを読んで検討することもできていることに注意してください:

sapply(list.files(), read.csv, simplify = FALSE) 
関連する問題