在网上找的代码如下
NRIcalculate=function(m1="dia1", m2="dia2", gold="gold"){ datanri=datanri[complete.cases(datanri),]; for(i in 1:length(names(datanri))){ if(names(datanri)[i]==m1)nm1=as.numeric(i); if(names(datanri) [i]==m2)nm2=as.numeric(i); if(names(datanri) [i]==gold)ngold=as.numeric(i); }; if(names(table(datanri)[,nm1]))[1]!="0"|| names(table(datanri)[,nm1]))[2]!="1"stop('指标1诊断值不是0和1'); if(names(table(datanri)[,nm2]))[1]!="0"|| names(table(datanri)[,nm2]))[2]!="1"stop('指标2诊断值不是0和1'); if(names(table(datanri)[,ngold]))[1]!="0"|| names(table(datanri)[,ngold]))[2]!="1"stop('金标准诊断值不是0和1'); datanri1=datanri[datanri[,ngold]==1,] table1=table(datanri1[,nm1],datanri1[,nm2]); datanri2=datanri[datanri[,ngold]==0,] table2=table(datanri2[,nm1],datanri2[,nm2]); p1=as.numeric(table1[2,1]/table(datanri[,ngold])[2]); p2=as.numeric(table1[1,2]/table(datanri[,ngold])[2]); p3=as.numeric(table2[2,1]/table(datanri[,ngold])[1]); p4=as.numeric(table2[1,2]/table(datanri[,ngold])[1]); NRI=round(p1-p2-p3+p4,3); z=NRI/sqrt((p1+p2)/table(datanri[,ngold])[2]+(p3+p4)/table(datanri[,ngold])[1]); z=round(as.numeric(z),3); pvalue=round((1-pnorm(abs(z)))*2,3); if(pvalue<0.001)pvalue="<0.001"; result=paste("NRI=",NRI,",Z=",z,",P=",pvalue,sep="); return(result) }
错误提示: 意外的'[' in "eric(i); if(names(datanri) [i]==m2)nm2=as.numeric(i); if(names(datanri) [i]==gold)ngold=as.numeric(i); }; "
想求大佬指点一下 刚开始学R 看不懂错误提示


雷达卡


京公网安备 11010802022788号







