输出R循环内容并以knitr html输出

sjg*_*ght 5 markdown for-loop r rstudio knitr

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

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

针织文档将显示:

头(ISEQ0)

................(头部内容)

头(ISEQ1)

......................(头部内容)

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

根据下面的评论,我似乎有一个简短的版本可以按我的预期工作:

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

在我的完整块中仍然有一些东西不起作用(我只得到第一次迭代)但完整块却没有。我尝试过 cat 和 print,我只是想获取要打印的第一个元素(cor(ISEQData),但它不起作用,所以我想知道是否将输出存储为变量(而不是尝试在“计算期间”打印)会有所帮助 - 它似乎没有,但它们并不都需要像下面的块一样存储。我一直将函数一一移到短块中,我认为 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)
}
Run Code Online (Sandbox Code Playgroud)

ags*_*udy 2

您应该使用printorcat强制输出:

```{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
}
```
Run Code Online (Sandbox Code Playgroud)