输出R循环内容并在knitr中输出html

Output R loop content and output in knitr html

我正在写一些东西,我 运行 使用循环在多个数据帧上创建一个函数(或集合)。当我将其编织到 html(在 RStudio 中)时,我希望能够 (a) 查看循环变量,以及 (b) 创建的输出。 所以如果我有一块:

```{r}
dflist <- list(ISEQ0=ISEQ0,ISEQ1=ISEQ1,ISEQ2=ISEQ2,ISEQ3=ISEQ3)
for(i in dflist){
 head(i)
}
```

knited 文档将显示:

head(ISEQ0)

................(head content)

head(ISEQ1)

..................(head content)

等等。我查看了 Whosebug、文档和一般网络搜索,并看到了一些对绘图循环的引用(这似乎有效),但据我所知,没有关于这种循环的内容。我在这里的目的是 运行 一组关于不同数据集的统计数据(我对循环比应用更熟悉,我猜它在这里没有什么区别)我认为这可能是一个相当常见的用例.

根据下面的评论,我似乎有一个像我预期的那样工作的简短版本:

ISEQList <- list(ISEQ0=ISEQ0,ISEQ1=ISEQ1,ISEQ2=ISEQ2,ISEQ3=ISEQ3)
for(ISEQData in ISEQList){
print(head(ISEQData))
print(cor(ISEQData))
}

在我的整个块中仍然有一些东西不工作(我只得到第一次迭代) 但完整的块不是。我试过 cat 和 print,我只是想打印第一个元素 (cor(ISEQData),但没有用,所以我想知道是否将输出存储为变量(而不是尝试打印 'during'计算)会有所帮助-它似乎没有,尽管它们并不像下面的块那样都需要存储。我一直在将函数一个一个地移动到短块中,我认为 vss 之后的所有内容都是有问题...但我不明白为什么。

for(ISEQData in ISEQList){
  n <- n +1
a <- cor(ISEQData)
###################################Explore factor options##############
b <- vss(ISEQData,n=9,rotate="oblimin",diagonal=F,fm="ml") 
c <- EFA.Comp.Data(Data=ISEQData, F.Max=9, Graph=T) #uses EFA Comparison Data.R
d <- fa.parallel(ISEQData) 
# Determine Number of Factors to Extract using N Factors library
ev <- eigen(cor(ISEQData)) # get eigenvalues
ap <- parallel(subject=nrow(ISEQData),var=ncol(ISEQData),rep=100,cent=.05)
nS <- nScree(x=ev$values, aparallel=ap$eigen$qevpea)
pnS <- plotnScree(nS) 
#######################################################
for(x in 2:5){
  assign(paste0("fitml",x,"ISEQ",n),fa(r = ISEQData, nfactors = x, rotate = "oblimin",     fm = "ml",residuals=T))
}
e<-fitml2$loadings
f<-fitml3$loadings
m<-fit # print results 
p<-factor.scores(ISEQData,fit)
q<-factor.stats(f=fit)
r<-fa.diagram(fit)
}

你应该使用printcat强制输出:

```{r}
for(i in seq_along(dflist)){
 print(paste('head data set:' , names(dflist)[i]))    ## sub title
 print(head(dflist[[i]]))                             ## content 
 cat(rep("*",20),'\n')                                ##  separator
}
```