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

如何让R语言函数支持逗号分隔QC类型输入及ALL选项?

解决R语言QC类型输入函数的多值识别与ALL选项问题

下面是修改后的函数代码,直接解决你提到的两个问题:支持逗号空格分隔的多类型输入,以及新增ALL全选选项:

askforQC_type <- \(qctype){
  qctype <- readline("What QC types would you like to run? (Enter comma-separated values or 'ALL' for all types) ") 
  qualitycontroltypes <- c('BLK', 'DDL', 'DUP', 'FBLK', 'LCS', 'LCSD', 'LDUP', 'LMB', 'MS', 'MSD', 'NO3', 'RNS', 'SO4', 'SPI', 'SPL', 'TBLK')
  
  # 处理ALL选项(不区分大小写)
  if(toupper(qctype) == "ALL") {
    chosen_types <- qualitycontroltypes
    writeLines(paste("QC types chosen:", paste(chosen_types, collapse = ", ")))
    return(invisible(chosen_types)) # 返回选中的类型,方便后续代码调用
  }
  
  # 拆分逗号加空格分隔的输入为单个元素向量
  qctype_split <- strsplit(qctype, ", ")[[1]]
  # 检查所有输入类型是否合法
  valid_types <- qctype_split %in% qualitycontroltypes
  
  if(all(valid_types)) {
    writeLines(paste("QC types chosen:", paste(qctype_split, collapse = ", ")))
    invisible(qctype_split) # 返回选中的类型
  } else {
    # 提取并提示无效类型,同时列出所有合法选项
    invalid_types <- qctype_split[!valid_types]
    writeLines(paste("Sorry, the following QC types are not applicable:", paste(invalid_types, collapse = ", ")))
    writeLines(paste("Valid QC types are:", paste(qualitycontroltypes, collapse = ", ")))
  }
}

关键改动说明

  • 输入提示新增说明,明确告诉用户可以输入的格式
  • 新增toupper()判断,输入ALL或all都能触发全选逻辑
  • 用strsplit(qctype, ", ")[[1]]把逗号空格分隔的字符串拆成单个元素的向量,实现多值识别
  • 改用all(valid_types)检查所有输入的合法性,替代原来的单字符串匹配
  • 错误提示更友好:明确指出无效类型,同时列出所有合法选项
  • 增加invisible()返回选中的类型,方便后续代码直接调用该函数的结果

测试示例

  1. 单个有效输入
askforQC_type()
# 输入: DUP
# 输出: QC types chosen: DUP
  1. 多个有效输入
askforQC_type()
# 输入: DUP, RNS, SPL
# 输出: QC types chosen: DUP, RNS, SPL
  1. ALL全选选项
askforQC_type()
# 输入: ALL
# 输出: QC types chosen: BLK, DDL, DUP, FBLK, LCS, LCSD, LDUP, LMB, MS, MSD, NO3, RNS, SO4, SPI, SPL, TBLK
  1. 包含无效输入的情况
askforQC_type()
# 输入: DUP, TEST, SPL
# 输出:
# Sorry, the following QC types are not applicable: TEST
# Valid QC types are: BLK, DDL, DUP, FBLK, LCS, LCSD, LDUP, LMB, MS, MSD, NO3, RNS, SO4, SPI, SPL, TBLK

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:44:53