You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言按课程汇总多实例唯一作业集合的代码问题排查

解决按课程生成作业超集的代码异常问题

首先构造符合你描述的测试数据,确保代码逻辑可验证:

df <- data.frame(
  course = c(1,1,1,1,2,2,2,2),
  instance = c(1,1,2,2,1,1,2,2),
  assignment = c("A","B","B","C","A","C","B","A")
)

你的核心需求是按course分组,提取每个组内所有唯一的assignment并排序。针对你遇到的异常结果,可能的原因和修正方案如下:

可能的错误原因及修正方法

1. 数据存在残留分组状态

如果之前对df执行过group_by操作但未用ungroup()取消分组,后续的group_by(course)会在原有分组基础上叠加,导致分组逻辑混乱,最终summarise返回异常结果。

修正代码:操作前先清除所有残留分组

library(tidyverse)

df %>%
  ungroup() %>%
  group_by(course) %>%
  summarise(
    all_assignments = toString(sort(unique(assignment))),
    .groups = "drop"
  )

2. assignment列是因子类型

如果assignment列是因子而非字符型,且因子水平设置异常(比如仅包含部分取值),sort(unique(assignment))会返回不符合预期的结果。

修正代码:先将因子转为字符型

df %>%
  mutate(assignment = as.character(assignment)) %>%
  group_by(course) %>%
  summarise(
    all_assignments = toString(sort(unique(assignment))),
    .groups = "drop"
  )

3. dplyr版本兼容问题

旧版本的dplyr对.groups参数支持不完善,可改用手动取消分组的写法:

df %>%
  group_by(course) %>%
  summarise(all_assignments = toString(sort(unique(assignment)))) %>%
  ungroup()

正确运行结果

执行上述修正代码后,会得到符合需求的结果:

courseall_assignments
1A, B, C
2A, B, C

内容的提问来源于stack exchange,提问作者bvecc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:31:17