我写了一个简单的函数来计算置信区间
data<-seq(1,25)
ci<-function(x){
df<-length(x)-1
t<-qt(0.975,df=df)
m<-mean(x)
sd<-sd(x)
n<-length(x)
se<-sd/sqrt(n)
(m+t*se)
(m-t*se)
}
ci(data)
#9.962024
正如你所看到的,它只给了我一个值(m-t*se)
而不是两个,而在函数中我也计算了(m+t*se)
。我在这里缺少什么?
由于
答案 0 :(得分:2)
正如Heroka所提到的,没有显式return语句的函数只会返回最终的evaluate元素。因此,您可以简单地添加return语句:
ci<-function(x){
df<-length(x)-1
t<-qt(0.975,df=df)
m<-mean(x)
sd<-sd(x)
n<-length(x)
se<-sd/sqrt(n)
return(c((m+t*se),(m-t*se)))
}
答案 1 :(得分:2)
R
函数将返回单个对象。您可以使用return
函数专门定义该对象,也可以自动返回上次评估的调用。如果要返回多个值,则必须先将它们组合成一个对象。
对于您的示例,可以这样做:
ci<-function(x){
df<-length(x)-1
t<-qt(0.975,df=df)
m<-mean(x)
sd<-sd(x)
n<-length(x)
se<-sd/sqrt(n)
c(upper = m+t*se, lower = m-t*se)
}
或者您可以明确地返回:
ci<-function(x){
df<-length(x)-1
t<-qt(0.975,df=df)
m<-mean(x)
sd<-sd(x)
n<-length(x)
se<-sd/sqrt(n)
return(c(upper = m+t*se, lower = m-t*se))
}
答案 2 :(得分:1)
我最终做到了这一点并且有效。如果有人知道更优雅或简洁的东西,请告诉我。
development {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost/sampleappdb?autoreconnect=true"
}
}