私は R でのプログラミングを始めて 1 週間目で、特定の問題の解決に関して大きな進歩を遂げましたが、より大規模なアドバイスが必要です。
CSV 形式のデータ ファイルでいっぱいのディレクトリがあります。ファイル名は、データ ソースを明確に識別します。データをインポートし、さまざまな計算によってデータを調整し、各ファイルの調整の結果を分析とレビューのために保持する必要があります。私は、個々のファイル単位でデータを開いて広範な調整を行うことを首尾よく学びました。条件付けにより、複数の計算出力が得られます。このプロセスを自動化し、それぞれのファイル名に基づいて結果に動的に名前を付ける必要があります。
データの条件付けは各ファイルで同じなので、ファイルごとに呼び出すことができる関数を作成しました。関数は、関数の実行後に消える独自の環境で動作することを理解しています。貼り付けを使用して変数に動的に名前を付けて名前を作成し、割り当てて結果をそれらの名前に割り当てることができます。これらの割り当ては、関数が閉じられると失われます。
すべてのファイルをステップ実行し、すべての個々の計算結果をワークスペースで利用できるようにするための最適な方法については確信が持てません。関数の出力を、後でインデックス付けできる単一のリストに書き込む「はず」であることはわかっています。ただし、数百の計算結果があり、後で索引付けが複雑になります。ファイルのうちの 2 つに、異なる場所での気温測定値が含まれているとします。わかりやすいファイル名に基づいて計算結果に動的に名前を付けているため、結果を Temperature.Air.Location1 および Temperature.Air.Location2 として保存できます。大きなリストの対応するインデックスを検索するのではなく、Temperature.Air.Location1 - Temperature.Air.Location2 と入力するだけで、後で温度デルタを計算できる機能が非常に気に入っています。
これを達成するためのエレガントな方法があると確信していますが、R での関数、補間、およびプロットについて学ぶことに夢中になり、大局。どんなアドバイスでも大歓迎です。
編集してサンプルコードを追加 関数のこの部分では、テーブルを x、y、z 座標に変換し、値を補間しています。
CalibrationImport.Table <- function(filename, parametername, xmin, xmax, ymin, ymax){
Path.File <- paste0(Path.Folder,filename)
assign(parametername, read.csv(Path.File, header = FALSE))
# Extract x coordinates from original table
assign(paste0(parametername,".x"), get(parametername)[1, ])
assign(paste0(parametername,".x"), unlist(get(paste0(parametername,".x"))[-1], use.names=FALSE))
assign(paste0(parametername,".x"), c(t(replicate(nrow(get(parametername))-1, get(paste0(parametername,".x"))))))
# Extract y coordinates from original table
assign(paste0(parametername,".y"), get(parametername)[ ,1])
assign(paste0(parametername,".y"), unlist(get(paste0(parametername,".y"))[-1], use.names=FALSE))
assign(paste0(parametername,".y"), c(replicate(ncol(get(parametername))-1, get(paste0(parametername,".y")))))
# Extract data for original table
assign(paste0(parametername,".z"), unlist(get(parametername)[-1, -1], use.names=FALSE))
# Interpolate 100x100 surface
assign(paste0(parametername,".i"), interp(get(paste0(parametername,".x")), get(paste0(parametername,".y")), get(paste0(parametername,".z")),
xo=seq(xmin, xmax, length=100), yo=seq(ymin, ymax, length=100)))
}