大家好,我正在尝试理解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);
}survivorsurv在这种情况下是如何工作的?一个解释将是有帮助的,任何关于如何在R中完成作业的输入都将是额外的。
非常感谢!
发布于 2012-09-03 17:53:20
这是一个聚合初始化器:
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)的有效索引,并且存在未定义行为的风险。
发布于 2012-09-03 18:07:04
给定@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.9969943https://stackoverflow.com/questions/12245453
复制相似问题