R语言函数优化:将dimxST定义为非字符串以指向数据框
完善R语言cpkstudy函数的解决方案
我帮你调整了cpkstudy函数的关键部分,解决了dimxST是字符串类型导致ss.study.ca无法正常调用的问题,具体修改如下:
修改后的完整函数代码
cpkstudy <- function(x, y){ # 直接获取名为x的数据框中名为y的列,得到实际的数值向量 dimxST <- get(x)[[y]] # 拼接LSL、USL、Target的键名,从PivSpecs列表中提取对应规格值 dLSL <- paste(y, "LSL", sep = "") dUSL <- paste(y, "USL", sep = "") dTar <- paste(y, "Target", sep = "") dimLSL <- PivSpecs[[dLSL]] dimUSL <- PivSpecs[[dUSL]] dimTar <- PivSpecs[[dTar]] # 正常调用ss.study.ca,此时dimxST是符合要求的非字符串类型 ss.study.ca(dimxST, LSL = dimLSL, USL = dimUSL, Target = dimTar) }
关键修改说明
- 去掉了原来用
paste拼接字符串的dxST,直接用get(x)[[y]]获取数据:get(x)会找到全局环境中名字为x的对象(也就是你传入的目标数据框)[[y]]则提取该数据框中列名为y的部分,得到的是实际的数值向量,完全符合ss.study.ca对第一个参数的类型要求
- 规格值(LSL/USL/Target)的提取逻辑保持不变,因为
PivSpecs是列表,用键名提取值的方式是正确的
这样修改后,dimxST就不再是字符串,而是指向对应数据框列的实际数据,ss.study.ca就能正常执行了。
内容的提问来源于stack exchange,提问作者Chris Higgins
相关产品推荐
相关产品推荐

