1

こんにちは、C で次の変数の割り当てを理解しようとしています。R で書き直してみてください。R をよく使用しますが、C をちらりと見ただけです。

    int age,int b_AF,int b_ra,int b_renal,int b_treatedhyp,int b_type2,double bmi,int ethrisk,int fh_cvd,double rati,double sbp,int smoke_cat,int surv,double town
    )
    {
        double survivor[3] = {
            0,
            0.996994316577911,
            0.993941843509674

        };
    a = /*pre assigned*/ 
    double score = 100.0 * (1 - pow(survivor[surv], exp(a)) );
    return(score);
}

このコンテキストで、survive[surv] はどのように機能しますか? 説明は役に立ち、R で割り当てを行う方法についての情報はボーナスになります。

どうもありがとう!

4

2 に答える 2

4

これは集計初期化子です。

double survivor[3] = {
    0,
    0.996994316577911,
    0.993941843509674
};

以下と同等です。

double survivor[3];
survivor[0] = 0;
survivor[1] = 0.996994316577911;
survivor[2] = 0.993941843509674;

配列のインデックスに格納されてsurvivor[surv]いる値です。survivor配列インデックスは から まで実行さ0れるN - 1ので、survがの値を持つ1場合。survivor[surv]0.996994316577911


現在書かれている関数survは、 が配列の有効なインデックスsurvivor(つまりsurv > -1surv < 3) であることをチェックせず、未定義の動作のリスクを冒すことに注意してください。

于 2012-09-03T09:53:20.363 に答える
3

@hmjd の回答が与えられた場合、R に相当するものは次のようになります。

survivor <- c(0, 0.996994316577911, 0.993941843509674)

または、survivorすでに存在し、最初の 3 つの要素に割り当てたい場合:

survivor[1:3] <- c(0, 0.996994316577911, 0.993941843509674)

(R のインデックスは、C の 0 ベースのものとは異なり、1 ベースであることに注意してください。)


抽出に関しては、一般的な考え方は C と同じですが、詳細が重要です。

R> survivor[0] ## 0 index returns an empty vector
numeric(0)
R> survivor[-1] ## negative index **drops** that element
[1] 0.9969943 0.9939418
R> survivor[10] ## positive outside length of vector returns NA
[1] NA
R> surv <- 2
R> survivor[surv] ## same holds for whatever surv contains
[1] 0.9969943
于 2012-09-03T10:07:04.377 に答える