我有一个数据列表(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文档。
请帮助!
答案 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'))
}