2012-09-03 67 views
1

您好我想了解在C以下變量賦值,並嘗試在R.它重新寫我經常用[R,但只有真正瞥了一眼C.C變量賦值和R相當於

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); 
} 

倖存者[倖存者]在這種情況下如何工作?解釋會很有幫助,關於如何在R中完成任務的任何輸入都會是一種獎勵。

非常感謝!

回答

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,因此如果surv1,則survivor[surv]的值爲0.996994316577911


注意,作爲當前寫入不檢查surv是數組survivor(即surv > -1surv < 3)有效的索引,並且運行的不確定行爲的風險的功能。

+0

非常感謝 - 我認爲它與分配變量到數組有關。 – brucezepplin

3

鑑於@hmjd的答案,然後,將R相當於將

survivor <- c(0, 0.996994316577911, 0.993941843509674) 

,或者如果survivor已經存在,並且要分配到前3個元素:

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

(注的r指數是基於1的,不像C的基於0的指數)。


至於提取,一般的想法是與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 
+0

非常好 - 非常感謝 - 關於在pow函數中調用survivor [surv],它是否保持不變? – brucezepplin

+1

是的,'survivor [surv]'會提取'survivor'向量的'surv'th索引,但是如何處理範圍之外的索引將與C不同。我將更新Answer。 –

+0

謝謝加文 - 這非常有幫助,我肯定會爲您提供的每個案例編寫一些錯誤處理程序。 – brucezepplin