在R中将Likert量表转换为模糊集时未使用参数错误的排查与解决
解决Likert量表转模糊集时的R代码「未使用参数」错误
问题背景
尝试将Likert量表变量转换为模糊集时,运行R代码触发「未使用参数」错误,原代码及报错信息如下:
原代码
bin <- function(x) x-1 Dataset$GEN_F <- bin(GEN) bas <- function(x,a,b,m,n) m+(n-m)*((x-a)/(b-a)) likert <- function(x,q,w,e,r,t,y,u) ifelse(x < 2, bas(x,1,2,q,w), ifelse(x >= 2 & x < 3, bas(x,2,3,w,e), ifelse(x >= 3 & x < 4, bas(x,3,4,e,r), ifelse(x >= 4 & x <= 5, bas(x,4,5,r,t), ifelse(x >= 5 & x <= 6, bas(x,5,6,t,y), ifelse(x >= 6, x <= 7, bas(x,6,7,y,u),0)))))) c <- 0 v <- 0.15 b <- 0.3 k <- 0.45 l <- 0.45 + 0.55/3 o <- 0.45 + 2 * 0.55/3 p <- 1 Dataset$PC2C_F <- likert(PC2C,c,v,b,k,l,o,p)
报错信息(含中文翻译)
原错误信息:
Error in ifelse(x >= 6, x <= 7, bas(x, 6, 7, y, u), 0) :
unused argument (0)中文翻译:
在调用ifelse(x >= 6, x <= 7, bas(x, 6, 7, y, u), 0)时出错:
存在未使用的参数(0)
错误原因
R语言中ifelse()函数仅接受3个参数:判断条件、条件为真时的返回值、条件为假时的返回值。原代码最后一个ifelse传入了4个参数(x >= 6、x <= 7、bas(x,6,7,y,u)、0),违反函数语法规则,导致报错。
修正后的代码
将最后一个ifelse的两个条件合并为x >=6 & x <=7,确保参数数量符合要求:
bin <- function(x) x-1 Dataset$GEN_F <- bin(GEN) bas <- function(x,a,b,m,n) m+(n-m)*((x-a)/(b-a)) likert <- function(x,q,w,e,r,t,y,u) ifelse(x < 2, bas(x,1,2,q,w), ifelse(x >= 2 & x < 3, bas(x,2,3,w,e), ifelse(x >= 3 & x < 4, bas(x,3,4,e,r), ifelse(x >= 4 & x <= 5, bas(x,4,5,r,t), ifelse(x >= 5 & x <= 6, bas(x,5,6,t,y), ifelse(x >= 6 & x <= 7, bas(x,6,7,y,u), 0)))))) c <- 0 v <- 0.15 b <- 0.3 k <- 0.45 l <- 0.45 + 0.55/3 o <- 0.45 + 2 * 0.55/3 p <- 1 Dataset$PC2C_F <- likert(PC2C,c,v,b,k,l,o,p)
修正说明
- 把原代码中
ifelse(x >= 6, x <= 7, bas(x,6,7,y,u),0)调整为ifelse(x >=6 & x <=7, bas(x,6,7,y,u), 0) - 合并后的条件
x >=6 & x <=7对应Likert量表的6-7分区间,符合模糊集转换的逻辑 - 调整后
ifelse参数数量正确,即可正常运行代码
内容的提问来源于stack exchange,提问作者Sanaz Soltani
相关产品推荐
相关产品推荐

