2017-11-13 16 views
0

月と年(40年分)で区切られたデータのリストを作成しようとしています。現在、データの名前構造は(Year) - (Numeric Month) - (Var).ncです。すべてのデータを下に作成した適切なリストに入れたいと思います。ここから進める方法は正確にはわかりません。どんな指導も高く評価されます。ファイル名でリストを整理するR

files_nc <- list.files(pattern = ".nc") 

year <- vector("list", length = 40) 
month <- vector("list", length = 12) 

names(year) <- c(1978:2017) 
names(month) <- c("Jan","Feb","Mar","Apr","May","Jun","Jul", 
    "Aug","Sep","Oct","Nov","Dec") 

for (i in 1:40) { 
    year[[i]] <- month 
} 
+0

希望の出力を表示できますか?それは明確ではない –

+0

私はファイルを繰り返し、正しいリストにそれぞれを配置したいと思っています。 1987年3月$ 1987-03-T2.nc – bwc

答えて

0

あなたが求めていることは完全にはっきりしませんが、これはうまくいくはずです。私はあなたがファイルのリストでロードしていると仮定していて、各ファイルは年と月に関連付けられています。

file_names <- list(names(files_nc)) 

file_names_split <- lapply(file_names,function(x)strsplit(x,"-")) 

for(i in 1:length(file_names_split)) { 

    y <- which(names(year) == file_names_split[[i]][[1]][1]) 
    m <- as.numeric(file_names_split[[i]][[1]][2]) 

    year[[y]][m] <- files_nc[[i]] 

} 

一般に、この方法が有効です。それがうまくいけば、forループをapplyステートメントとして書き直す時間がかかります。

+0

年のようなものなので、質問はあいまいでしたが、あなたはそれを得ました。 strsplit関数は私が必要としていなかった欠点でした。ありがとうございました!ほとんどのループを行う方法について聞いたことがありますが、ループをfor文に変換する方法を見ていきます。 – bwc

関連する問題