我遇到了一个奇怪的问题(我是 R 新手)。我尝试创建如下函数:
library(ggplot2)
median_confidence_interval <- function(x) {
quart_list<-c()
return_data<-data.frame(lower_ci=0,median=0,upper_ci=0)
for(i in 1:1000){
y<-x[as.integer(runif(length(x), min = 1, max = length(x) + 1))]
median<-median(y)
quart_list=c(quart_list,median)
}
return_data$median<-median(quart_list)
return_data$lower_ci<-quantile(quart_list,probs=0.025)
return_data$upper_ci<-quantile(quart_list,probs=0.975)
p <- ggplot()
p <- p + geom_density(aes(x=x)) + geom_density(aes(x=quart_list))
p <- p + geom_vline(aes(xintercept = return_data$median, color='red'))
p <- p + geom_vline(aes(xintercept = return_data$lower_ci, color='blue'))
p <- p + geom_vline(aes(xintercept = return_data$upper_ci, color='green')) + coord_cartesian(xlim = c(min(x),max(x)))
png("density_confidence_internal.png")
plot(p)
dev.off()
return_data
}
在这段代码中,我只是想创建一个图并保存它。虽然我能够在函数外部独立执行这些语句,但不能在函数内部执行。该函数编译时没有错误,但在运行该函数时它显示“quart_list”未找到。如果quart_list
和return_data
存在于工作区中,那么我可以执行该函数并获得结果。当我清除工作区并执行该功能时,我在运行(而不是编译)时遇到了同样的错误。
另一个问题是,当我调用函数时median_confidence_interval(x)
,它希望我只提供 'x' 作为参数,而不需要像median_confidence_interval(possum$earconch)
. 为什么会这样?
有人能指出我的方向吗?