使用lapply执行回归时遇str2lang错误:unexpected symbol
问题分析与解决
错误根源
报错的核心原因是回归公式构建不合法:你用paste(x, paste(y, collapse="+"))生成的字符串缺少了分隔因变量和自变量的~符号,导致as.formula无法解析成正确的回归公式。比如生成的错误字符串是"pond_total_index_blocs_iguals unitatespecifica+...",而R要求的回归公式格式必须是"因变量 ~ 自变量1+自变量2+..."。
另外还有两个潜在问题需要修正:
- 自变量列表里的
actutransv拼写错误,数据集对应的列名是actu_transv(带下划线) - 自变量列表重复包含
util_rec_nuevo_pers,会导致模型出现重复变量的报错
修正后的代码
1. 修正自变量定义
dep <- list("pond_total_index_blocs_iguals") # 修正拼写错误,移除重复变量 variables_index_subst_ <- c("unitatespecifica", "responsable", "actu_transv", "util_rec_nuevo_pers", "ord_aprob", "pers_transp_tareas")
2. 修正公式构建逻辑
在拼接公式时添加~分隔因变量与自变量:
models <- lapply(dep, function(x, y) { # 构建合法的回归公式字符串 formula_str <- paste(x, "~", paste(y, collapse = "+")) step(lm(as.formula(formula_str), data = juntar_blocs), direction = "backward") }, y = variables_index_subst_)
额外注意事项
你的数据集样本量仅为6个,远小于自变量数量,这种情况下逐步回归无法得到统计学上合理的模型结果,建议增加样本量后再执行分析。
内容的提问来源于stack exchange,提问作者FrancoBattiato
相关产品推荐
相关产品推荐

