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

如何在learnr教程中动态调整测验题的选项数量?

动态构建learnr多选测验题方案

核心思路

利用do.call()函数将动态生成的参数列表传递给question_checkbox(),实现从CSV等外部数据源加载可变数量选项的需求。

具体实现步骤

  1. 准备外部数据结构
    假设CSV文件(如quiz_data.csv)包含以下字段:

    question_textoption_textis_correct
    选择玛格丽特披萨的所有配料:马苏里拉奶酪TRUE
    选择玛格丽特披萨的所有配料:罗勒叶TRUE
    选择玛格丽特披萨的所有配料:洋葱FALSE
    选择玛格丽特披萨的所有配料:菠菜FALSE
  2. 读取并转换数据为可用格式

    # 读取外部CSV数据
    quiz_df <- read.csv("quiz_data.csv", stringsAsFactors = FALSE)
    
    # 提取唯一的题目文本
    target_question <- unique(quiz_df$question_text)[1]
    
    # 批量生成answer对象
    answer_items <- lapply(1:nrow(quiz_df), function(i) {
      answer(
        text = quiz_df$option_text[i],
        correct = as.logical(quiz_df$is_correct[i])
      )
    })
    
  3. 动态构建并生成测验题

    # 组合所有参数:题目文本 + 批量生成的answer + 配置项
    quiz_args <- c(
      list(target_question),
      answer_items,
      list(
        random_answer_order = TRUE,
        allow_retry = TRUE,
        try_again = "请确保选中所有正确配料!"
      )
    )
    
    # 通过do.call将参数列表传入question_checkbox
    dynamic_checkbox <- do.call(question_checkbox, quiz_args)
    

关键说明

  • 直接传入answer_items列表会失败,因为question_checkbox()要求每个answer是独立参数而非单个列表,do.call()会自动将列表元素展开为函数的独立参数。
  • 若需批量生成多道题目,可循环处理每道题的选项组,重复上述流程即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:47:14