尝试创建循环以从数据列表中导出Excel文件

时间:2018-09-20 22:01:12

标签: r export-to-excel

我有一个数据列表(150个学生姓名+班级+成绩),我正在尝试按 class 创建Excel工作表。我目前有按类别细分的数据列表,但是无法将其导出到Excel。

IncomingClasses <- split(Students, Students$Class-Course)
classes <- names(IncomingClasses)

for (i in seq(classes)){
    assign(classes[i], IncomingClasses[[i]])
    write.xlsx(IncomingClasses[i], file = paste(i, ".xlsx"))
}

但是我无法导出。我得到的最好的错误消息是:

  
      
  • 错误(函数(...,row.names = NULL,check.rows = FALSE,check.names = TRUE ,:参数表示行数不同:34,   44,15,17,16,18
  •   

因为我应该有不同的行,因为每个班级都有不同的学生...但是它不会创建.xlsx文档。

请帮助!

2 个答案:

答案 0 :(得分:0)

比方说,我已经有了用这些变量初始化的数据框。

student <- c('joe', 'bob', 'foo', 'bar')
class <- c('1', '2', '3', '4')
grade <- c('a', 'b', 'c', 'd')
df <- data.frame(student, class, 

为什么不创建一个临时数据框并将其保存到文件中,并将适当的子集保存到具有正确类名称的条目中?

for (c in unique(df$class)) {
    tdf <- df[df$class == c, ]
    write.csv(tdf, file = paste(c, ".csv"))
}

答案 1 :(得分:0)

您没有提供问题的完全可复制的示例,因此很难诊断,但是我至少看到三个问题。要访问拆分的数据帧,应使用[[而不是[,使用seq将产生编号的文件名,并且应使用paste0而不是paste以避免在文件名中插入空格。此外,使用assign会造成混淆。我可能会建议:

for (i in names(IncomingClasses)) {
  write.xlsx(IncomingClasses[[i]], file = paste0(i, '.xlsx'))
}