2015-01-09 86 views
3

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

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

的knited文件将显示:

头(ISEQ0)

............... (头的内容)

头(ISEQ1)

..................(头含量)

等等。我已经看到了stackoverflow,文档和一般的websearches,并看到一些参考剧情循环(似乎工作),但没有在这种类型的循环,据我所知。我的目的是在不同的数据集上运行一组统计数据(我比较熟悉循环而不是应用,并且猜测在这里没有什么不同),我认为这可能是一个相当常见的用例。

按照下面的评论,我似乎有一个短版工作,我会期望:

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

目前仍然在我的完整块不工作的东西(我只得到了第一次迭代) 但全块不是。我试过猫和打印,我只是试图让第一个元素(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) 
} 

回答

2

您应该使用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 
} 
``` 
+0

感谢@agstudy我刚刚看了一下打印和猫的帮助,是打印的东西,我可以包裹环路中的所有东西,例如 的(我在LIS){ 打印({ 头(我) nrow(I) 的NcoI(I) }) } – sjgknight 2015-01-09 23:20:54

+0

使用类似:'打印(粘贴(nrow(I)的NcoI(我)))'我是你我不是我的。 – agstudy 2015-01-09 23:24:59

+0

啊!我意识到现在这不是真正的针织衫,这些价值永远不会被打印在一个循环中,因此它们当然也不在针织文档中。在我的完整代码块中,我已经在一行生成输出的同时尝试了print和cat方法,我得到了第一次迭代打印,但不是后续打印。 这个工程,我会期望: 为(ISEQData在ISEQList){ 打印(头(ISEQData)) 打印(COR(ISEQData)) } 但在我的长码块/循环它不。多玩一点(意外按下输入这个)。 – sjgknight 2015-01-10 11:13:39