根据r中查找函数的结果从列表中打印xtable对象

时间:2013-06-06 16:20:55

标签: r xtable

我有很多不同学校的教师学生评分数据集。每位教师对每个学生都有不同的评分。我正在尝试创建重复的报告,每个老师都有一份报告。在每个报告中,我都需要教师级别数据和组级别数据。我能够创建一个显示各个教师级别数据的报告。但是,我现在需要为每位教师添加学校级数据。我的数据集中有每个老师所属的学校。我想要做的是告诉r查看教师的唯一标识符,并根据该标识符确定教师所教学校的名称,并根据学校名称插入该学校的表格。

以下是一些示例数据,以及我如何准备我的表格。我很抱歉代码很长(如果你有关于缩短代码的建议我会很感激这些建议)。 此代码将设置样本数据集。

Q1<- sample(letters[1:4],100, replace=TRUE)
Q2<-sample(letters[1:4],100, replace=TRUE)
Q3<-sample(letters[1:4],100, replace=TRUE)
Q4<-sample(letters[1:4],100, replace=TRUE)
teacher<-1:20
school<-1:5
df<-data.frame(Q1,Q2, Q3,Q4,teacher,school)
df$teacher<-as.factor(df$teacher)
df$school<-as.factor(df$school)

现在,此代码将计算并设置我在报告中创建的表。 第一组将在4个单独的问题上计算每个学校的数据并提取数据。

table1<-CrossTable(df$Q1,df$school, prop.chisq=FALSE)
table1percent<-t(100*table1$prop.col)
table2<-CrossTable(df$Q2,df$school, prop.chisq=FALSE)
table2percent<-t(100*table2$prop.col)
table3<-CrossTable(df$Q3,df$school, prop.chisq=FALSE)
table3percent<-t(100*table3$prop.col)
table4<-CrossTable(df$Q4,df$school, prop.chisq=FALSE)
table4percent<-t(100*table4$prop.col)

此循环将创建数据表的列表。每个学校的表格。

schools<-list()
school.results<-list()
for (i in 1:nlevels(df$school)){
  schools[[i]]<-matrix(paste(rbind(table1percent[i,], table2percent[i,],table3percent[i,],table4percent[i,]),"%", sep = ""), 
                       4,4,dimnames=list(c("question1","question2","question3","question4"),c("Always", "Most of the Time", "Some of the Time", "Never")))

  school.results[[i]]<-xtable(schools[[i]], align=c("l","c","c","c","c"))
}

此代码将设置数据并为每位教师创建表格。

teachertable1<-CrossTable(df$Q1,df$teacher, prop.chisq=FALSE)
teachertable1percent<-t(100*teachertable1$prop.col)
teachertable2<-CrossTable(df$Q2,df$teacher, prop.chisq=FALSE)
teachertable2percent<-t(100*teachertable2$prop.col)
teachertable3<-CrossTable(df$Q3,df$teacher, prop.chisq=FALSE)
teachertable3percent<-t(100*teachertable3$prop.col)
teachertable4<-CrossTable(df$Q4,df$teacher, prop.chisq=FALSE)
teachertable4percent<-t(100*teachertable4$prop.col)

此for循环将为每位教师创建一个表格列表。

teacher<-list()
teacher.results<-list()

for (i in 1:nlevels(df$teacher)){
  teacher[[i]]<-matrix(paste(rbind(teachertable1percent[i,], teachertable2percent[i,],teachertable3percent[i,],teachertable4percent[i,]),"%", sep = ""), 
                       4,4,dimnames=list(c(c("question1","question2","question3","question4")),c("Always", "Most of the Time", "Some of the Time", "Never")))

  teacher.results[[i]]<-xtable(teacher[[i]], align=c("l","c","c","c","c"))
}

在我使用brew包的重复报告中,我有一个包裹在循环中的部分,将为每位教师打印表格。像这个代码

print(xtable(teacher.results[[i]])) 

我还想要每个老师的学校级数据部分。然而,因为它是一个重复的报告,并且有更多的老师而不是学校,我不能把学校的桌子放在一个循环中。

我编写的代码将采用教师的标识符告诉我他们所教的学校

unique(df[df$teacher=="1",6]) 

我想从上面的这个函数中获取结果,并在print table命令中使用它,以便能够判断要放入哪个学校级表。这样的事情

print(school.results$"unique(df[df$teacher=="1",6])", table.placement = "H",latex.environments = "")

然而,这不起作用。我也尝试过类似的使用像这样的cat和paste命令

打印(cat(&#34; school.results $ \&#34;&#34;,粘贴(唯一(df [df $ teacher ==&#34; 1&#34;,6])), &#34; \&#34;&#34;,sep =&#34;&#34;),table.placement =&#34; H&#34;,latex.environments =&#34;&#34 ;)

但这只会返回

school.results$"1"NULL

有没有人对我如何能够完成我想做的事情有任何建议?

我再次为帖子的长度道歉。我不知道如何做一个较短的例子。

0 个答案:

没有答案