関数への入力である多くのデータセットがあります。データはデータ テーブルに保存され、関数出力の信頼区間を計算しています。ただし、すべての入力データが同じで、次のようなエラーが発生する場合があります。すべての値が等しい場合の 0 または NA のような任意の値への間隔)? 例えば:
library(boot)
library(data.table)
problem=1
data<-data.table(column1=c(1:100),column2=c(rep(100,99),problem))
resample.number=1000
confidence=0.95
sample.mean<-function(indata,x){mean(indata[x])}
boot_obj<-lapply(data,boot,statistic = sample.mean,R = resample.number)
boot.mean.f<-function(x,column){
x[column][1]
}
means<-data.table(sapply(boot_obj,boot.mean.f))
bootci_obj<-lapply(boot_obj,boot.ci, conf = confidence, type = "perc")
bootci.f<-function(x,column){
x<-x[column][4]
x<-unlist(strsplit(as.character(x[1]),","))
x<-sub("[:punct:].*","",x)
x<-sub("lis.*","",x)
x<-sub(").?","",x)
x<-na.omit(as.numeric(x))
}
cis<-data.table(t(sapply(bootci_obj,bootci.f)))
setnames(means,"V1","stat")
cis[,V1:=NULL]
cis[,V2:=NULL]
setnames(cis,c("V3","V4"),c("lci","uci"))
return(cbind(means,cis))
戻り値:
stat lci uci
1: 50.5 44.96025 56.26797
2: 99.01 97.03000 100.00000
変化
problem=1
戻り値:「t のすべての値は 100 に等しい \n 信頼区間を計算できません」 これは他のエラーにつながります。
結果を次のようにしたいと思います。
stat lci uci
1: 50.5 44.96025 56.26797
2: 100.0 0.0000 0.00000