2016-04-19 5 views
0

数週間、私は週に1回データを測定しました。その間に測定器が使用されていたので、私は今やRに読み込まれたファイルをかなり手に入れてワークスペースに入れました。 data.framesのすべてにパターン「11」が含まれるように名前を同じにしました。変数名に私は R:リスト内の特定の基準を満たす.GlobalEnvの変数を入力してください

ls(pattern = "11.") 

を使用することにより、これらの変数名(のみ)のリストを取得することができます知っているが、私はそれらの data.framesを含む listを持っていると思います。もちろん、私はスクリプトに戻って、 read.tableコマンドを例えばから変更することができます。

data.list[1] <- read.table(...) 

以降「A.11.01」にリスト要素data.list[1]の名前を変更する(と私はすぐにこれをやっていれば、時間の素敵な量を保存しているだろう)に

A.11.01 <- read.table(...) 

とI 1つのコマンドでリスト要素の定義と命名方法を知ることもできますが、Rにこのリストを作成させるという単純なオプションがあるかのように感じることができます。

(別のアプローチは、私がdata.list[1] <- .GlobalEnv[1]だっみましたが、私はenvironmentをサブセットする方法を見つけないことになった。(私の他のアプローチはまったく言及されるように愚かなように見える。))

答えて

1

あなたは

mylist <- mget(ls(pattern = "11.")) 
を使用することができますあなたが唯一のそのパターン(ではない他のオブジェクト)と data.frame Sを得ることを確認する場合に使用でき

または、

mylist <- Filter(is.data.frame, mget(ls(pattern = "11."))) 
ところで

は、あなたの状況では、直接

listfiles <- list.files("path/to/folder", pattern = "\\.csv$", full.names=TRUE) 
mylist <- lapply(listfiles, read.csv, stringsAsFactors = FALSE) 

stringsAsFactors = FALSEあなたは簡単に他の引数を追加できることを示すための一例に過ぎないようなものを使用して、リストにそれらを読みやすいだっただろう)

+0

ところで特別な感謝時間! – mattu

1

多くの方法でコンピュータの時間が人間の時間よりも安いので、docendo discimusのようにファイル名のベクトルにlapplyを使用することが賢明かもしれません。

しかし、その後、再び、それはgrepを使用して、たとえば、リストにあなたの.GlobalEnvを変換し、それをサブセットするのは簡単です:1で、リスト内の複数のテーブルに読み込むためのトリックのための

gelist <- as.list(.GlobalEnv) 
# or ... as.list(environment()) 
gelist <- gelist[grep("^11\\.", names(gelist))] 
#^saying that expected pattern is at the beginning of the string 
# and . has a special meaning for grep, so it has to be "escaped" by \\ 
# see ?regexp 
関連する問題