2013-08-28 94 views
0

我正在尝试创建一个循环,该循环使我回到使用一个截距和三个系数进行回归分析的引导置信区间。对引导功能进行编程运行良好。循环不会打印函数输出

问题是,我必须在函数boot.ci中使用索引(如index = 1)来回归每个回归对象,因为boot.ci不知道我的回归模型系数的名称。

所以我做了以下内容:

for (i in 2:inputnumberobjects) 
    { 
    cat(paste("BOOT CONFIDENCE INTERVALS FOR COEFFICIENT ", inputnamesobjects[i], ":\n\n", sep="")) 
    boot.ci(bootResults, type = "bca", index=i) ### Result for Coefficients 
    } 

我spefified对象的数量和对象的名称循环之前。

问题是,该函数似乎忽略循环内的boot.ci函数。

例如,如果对象的名称是 inputnamesobjects < - C( “一”, “B”, “C”, “d”)

然后我得到以下输出:

BOOT CONFIDENCE INTERVALS FOR COEFFICIENT a: 

BOOT CONFIDENCE INTERVALS FOR COEFFICIENT b: 

BOOT CONFIDENCE INTERVALS FOR COEFFICIENT c: 

BOOT CONFIDENCE INTERVALS FOR COEFFICIENT d: 

我没有得到,是boot.ci

的结果。如果我#m的不使用循环,而使用类似:

boot.ci(bootResults, type = "bca", index=2) 

一切工作正常。

任何想法?

+1

欢迎来到Stackoverflow!为了将来的参考,请参阅[如何制作可重现的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/),以便我们可以复制您的问题。 –

回答

1

我使用的功能帮助中的示例数据为boot.ci,因为您没有包含任何内容。有些功能需要强制打印内部其他功能,通常使用功能print。复制此格式:

library(boot) 
ratio <- function(d, w) sum(d$x * w)/sum(d$u * w) 
city.boot <- boot(city, ratio, R = 999, stype = "w", sim = "ordinary") 

for (i in letters[1:5]) { 
    cat("This is number:\n", i, "\n") 
    print(boot.ci(city.boot, conf = c(0.90, 0.95),type = c("bca"))) 
} 

请注意,您不需要pastecat内。但总的来说,避免cat是很好的,因为print是一个稍微温和的功能。使用cat可能会导致烦人的消息很难以后。

未来,请提供可再生的例子! (并且让我们知道您正在使用哪些软件包!)

2

如果您只是想查看输出,请将您的功能封装在print命令中。

for (i in 2:inputnumberobjects) 
    { 
    cat(paste("BOOT CONFIDENCE INTERVALS FOR COEFFICIENT ", inputnamesobjects[i], ":\n\n", sep="")) 
    print(boot.ci(bootResults, type = "bca", index=i)) ### Result for Coefficients 
    } 
+0

好的,谢谢大家。 打印命令运行良好。 不知道我必须在循环中明确地使用print命令(仍然学习R的基础知识!) – deschen

0

自动打印在循环内关闭,就像在函数内一样。如果你想看到输出,你需要明确地打印一些东西。

for (i in 2:inputnumberobjects) 
{ 
    cat(paste("BOOT CONFIDENCE INTERVALS FOR COEFFICIENT ", inputnamesobjects[i], ":\n\n", sep="")) 
    print(boot.ci(bootResults, type = "bca", index=i)) ### Result for Coefficients 
} 

希望有帮助。