循环不打印功能输出

时间:2013-08-28 14:25:52

标签: r for-loop

我正在尝试制作一个循环,它让我回到自举置信区间,用于使用一个截距和三个系数进行回归分析。编程自举功能运行良好。

问题在于我必须在函数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
  }

在循环之前,我指定了对象的数量和对象的名称。

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

例如,如果对象的名称是     inputnamesobjects< - c(“a”,“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的结果

如果我没有使用循环而是使用类似的东西:

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

一切正常。

有什么想法吗?

3 个答案:

答案 0 :(得分: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
  }

答案 1 :(得分: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")))
}

请注意,您不需要paste内的cat。但总的来说,避免使用cat是件好事,因为print是一个稍微温和的功能。使用cat可能会导致以后难以处理的恼人信息。

将来,请提供可重现的示例! (并告诉我们您正在使用哪些套餐!)

答案 2 :(得分: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
}

希望有所帮助。