2011-07-02 14 views
1

生データのセットを解析し、さまざまなパラメータと関数に基づいてさまざまなフォーマットに変換するスクリプトを作成しました。私は152個の生データシートを用意していますが、それぞれのスクリプトを使用するだけです。しかし、私は変数やパラメータを変更する必要があると判断するかもしれませんが、すぐに私のスプレッドシートの最上部にある関数リストの残りの部分に影響を与えるパラメータリストを作りたいと思うこともありますスクリプト。Rで自動化を作成する

  1. グローバル変数は、これは最高のこの例を説明するが、この問題への答えではありません。

    exceedes <- function (L=NULL, R=NULL) 
    { 
    
    if (is.null(L) | is.null(R)) 
    { 
    print ("mycols: invalid L,R.") 
    return (NULL)    
    } 
    options (na.rm = TRUE) 
    test <-(mean(L, na.rm=TRUE)-R*sd(L,na.rm=TRUE)) 
    test1 <- ifelse(is.na(L), NA, ifelse(L > test, 1, 0)) 
    return (test1) 
    } 
    
    L=ROCC[,2] 
    R=.08 
    ROCC$newcolumn <- exceedes(L,R) 
    names(ROCC)[names(ROCC)=="newcolumn"]="Exceedes1" 
    
    L=ROCC[,2] 
    R=.16 
    ROCC$newcolumn <- exceedes(L,R) 
    names(ROCC)[names(ROCC)=="newcolumn"]="Exceedes2" 
    
    L=ROCC[,2] 
    R=.24 
    ROCC$newcolumn <- exceedes(L,R) 
    names(ROCC)[names(ROCC)=="newcolumn"]="Exceedes3" 
    

したがって、上記の例では、私が道を持っているしたいと思いますRの範囲を変更し、この機能が152回繰り返されるため、スクリプトの残りの部分に影響を与えます。私がそれをすると考えることができる唯一の方法は、毎回異なる変数で関数を何度も繰り返しコピーアンドペーストし、それをグローバルに設定することです。しかし、私は単純な方法があると想像しなければならないでしょう、私の機能はおそらくおそらく再配置する必要がありますか?

  1. ファイル名と出力名。私はこれが可能かどうかはわかりませんが、たとえば、すべてのinput.csvが、1つのデータセットに123というタイトルが付けられ、123が別のものに124、別の125などがあり、Rに次のデータセット、 read.csv(file = "123.csv")を実際に入力してからwrite.csv(例:file = "123.csv")などを入力しなくても、そのデータセットをコンピュータの特定のフォルダに出力することができます?

  2. オートメーションスクリプトの一般的な書式 私のオートメーションに入る前に、スクリプトを152回以上コピーしてから、それぞれのファイル名と出力名を変更することになりました。これはばかげて、プログラミングスキルが不足しているので、私はそれを変更するためのより良い方法はわかりません。どのアイデアですか?

ご協力ありがとうございます。

+0

私はこの投稿を編集しようとしましたが、 ' '' $ 'のものを正しく実装する方法がわかりません – Tim

+1

は現在の編集内容ですか? –

+0

はい、どうしましたか? – Tim

答えて

3

あなたは

R <- c(seq(0.1, 1, by = 0.01)) 

R言う)paremtersのベクターを構築することにより、異なるパラメータを持つ関数を再実行してからsapplyを使用してexceedes機能length(R)回実行することができます。

exceedes <- function(R, L) {} #notice the argument order 
sapply(X = R, FUN = exceedes, L = ROCC[, 2]) 

あなたの機能(例えばfile.name)に他の引数を渡すと、何が必要、ファイル名を作成するためにそれを使用することができます。

+0

'R < - C(配列(0.08、0.8、によって= 0.08)) exceedes < - 関数(R = NULL、L = NULL){ \t(is.null(L)場合|です。ヌル(R)){ \t \t print( "mycols:invalid L、R。「) \t \tリターン(NULL)\t \t} \tオプション(na.rm = TRUE) \t試験< - (平均(L、na.rm = TRUE)-R * SD(L、na.rm = TRUE)) test1 return(test1) } サプリー(X = R、関数=超過、L = ROCC [、2]) 'これといくつかのバリエーションはコードを受け入れていないので、等号が無効であると不平を言いました – Tim

+0

ローマンの例と'?sapply'を注意深く見てください引数の構文は 'FUN = exceedes '' not '' function = exceedes'。 – joran

+0

謝罪、私はこれまでFUNを使ったことがないし、それは単なる略語だと思ったiation。助けてくれてありがとう、私はfile.nameでこれを試してみるつもりです。いくつかの変数(例:D)として記述したスクリプト全体を指定し、他のすべてのデータシートをスクリプトDで処理させる方法はありますか?このようにして、私は数千行のコードで終わることはありません。 – Tim

関連する問題