【发布时间】:2015-03-08 08:46:47
【问题描述】:
我正在写一些东西,我使用循环在多个数据帧上运行一个函数(或集合)。当我将它编织到 html(在 RStudio 中)时,我希望能够(a)查看循环变量,以及(b)创建的输出。 所以如果我有一块:
```{r}
dflist <- list(ISEQ0=ISEQ0,ISEQ1=ISEQ1,ISEQ2=ISEQ2,ISEQ3=ISEQ3)
for(i in dflist){
head(i)
}
```
编织的文档会显示:
头部(ISEQ0)
..................(头部内容)
头部(ISEQ1)
.....................(头部内容)
等等。我查看了stackoverflow、文档和一般网络搜索,并看到了一些对绘图循环的引用(这似乎有效),但据我所知,这种循环没有任何内容。我的目的是在不同的数据集上运行一组统计数据(我更熟悉循环而不是应用,我猜它在这里没有什么区别)我认为这可能是一个相当常见的用例。
根据下面的评论,我似乎有一个按预期工作的简短版本:
ISEQList <- list(ISEQ0=ISEQ0,ISEQ1=ISEQ1,ISEQ2=ISEQ2,ISEQ3=ISEQ3)
for(ISEQData in ISEQList){
print(head(ISEQData))
print(cor(ISEQData))
}
在我的完整块中仍然有一些东西不起作用(我只得到了第一次迭代) 但完整的块不是。我尝试过 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)
}
【问题讨论】:
标签: r for-loop markdown rstudio knitr