您好我正在尝试理解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);
}
幸存者[幸存]如何在这种背景下工作?解释会有所帮助,任何关于如何在R中进行分配的输入都是奖励。
非常感谢!
答案 0 :(得分: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 > -1
和surv < 3
)并且存在风险未定义的行为。
答案 1 :(得分: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