2016-11-10 3 views
0

私はRが新しく、今はほとんど固執していません。コード全体の「x」を置換えの異なるリストに置き換えるためのループ

# Load all EUR Files 
setwd(EUR) 
filenames <- list.files(path = EUR) 
MSCIeur <- do.call("rbind", lapply(filenames, read.csv, header = TRUE, sep = ";")) 

は、今私は、異なる通貨のために、このコードを複数回実行する必要があるので、私の質問は次のとおりです:実行する方法はあり だから、私はこのようなコードを(これは始まりに過ぎない)を書きました同じコードを複数回実行して初めて実行すると、次回に "EUR"を "USD"などで置き換えるときに "EUR"を使用するか、コード全体をコピーしてコピーしてすべての "EUR"手動で「USD」を使用しますか?これを読むために時間がかかった誰にも

Thxを:)

+0

ルック'あなたの最善の選択肢として。 'for'ループはうまくいくかもしれませんが、効率が悪く、結果をより明示的に保存する必要があります –

+0

一つの選択肢は、' EUR'が 'x'のようなものに置き換えられたこの関数全体を正式な引数とし、ループするすべての通貨のベクトルと関数の名前を渡すときに 'lapply'を呼び出すことができます。 –

+0

@DanielAndersonまさに私が考えていたことですが、自分の関数を書くのは本当に苦労しますが、試してみてください:)ありがとう! – LeroxXx

答えて

0

あなたが別の作業ディレクトリを設定し、リスト内のすべてのデータを格納することができ、forループを試してみてください:lapply `で

curr.name <- gsub(x = list.dirs('.', recursive=FALSE), pattern = "./", replacement ="") 

curr <- paste(getwd(), curr.name, sep = "/") 

___________________________________________________________________________________________ 

MSCI <- list() 

for(i in 1:length(curr)){ 
    setwd(curr[i]) 
    filenames <- list.files(path = curr[i]) 
    MSCI[[i]] <- do.call("rbind", lapply(filenames, read.csv, header = TRUE, sep = ";")) 
} 

names(MSCI) <- curr.name 

___________________________________________________________________________________________ 

# Other way 

for(i in 1:length(curr)){ 
    setwd(curr[i]) 
    filenames <- list.files(path = curr[i]) 
    assign(curr.name[i],do.call("rbind", lapply(filenames, read.csv, header = TRUE, sep = ";"))) 
} 
+0

ありがとうございます!私は非常に残念ですが、私はこのコードを完全に理解していません。何とか働いて、他の通貨のすべてのデータフレームが内部にあるリストを作成しました。しかし、これを後で個々のデータフレームに分割します私はリストを使って作業する方法を理解していません。/ – LeroxXx

+0

今すぐチェックして、あなたの要件に合わせて編集しました。 –

+1

これは私が欲しかったのと同じように機能してくれてありがとう! – LeroxXx

関連する問題