【问题标题】:Error using lapply to perform regression: variable lengths differ (found for 'x')使用 lapply 执行回归时出错:可变长度不同(为“x”找到)
【发布时间】:2020-07-13 16:26:51
【问题描述】:

我正在尝试使用 lapply 对存储在向量 fsdata_dict1 中的 68 个不同变量执行相同的多元逻辑回归方程。当我尝试运行以下代码时,出现以下错误:Error in model.frame.default(formula = binge_dr ~ x + Age_in_Yrs + Race + : variable lengths differ (found for 'x') 。数据中不存在 NA,并且在数据上运行 str() 显示所有变量具有相同数量的观察值。据我所知,所有变量都在数据集中定义,所以我认为命名冲突不是问题。

代码:

glm_func <- function(x){
 return(glm(binge_dr ~ x + Age_in_Yrs +  Race + SSAGA_Income + SSAGA_Educ, family = binomial, data = fdata_fs, na.action = na.pass))
}

lapply(fsdata_dict1, glm_func)

【问题讨论】:

  • 公式正在寻找要从您的数据中评估的列名,在您的情况下,x 是完全来自不同对象的数据本身。 fsdata_dict1 只是在fdata_fs 中找到的列的副本吗??
  • @Daniel 哦,我明白了!是否有另一种方法可以对存储在向量中的每个变量执行回归? fsdata_dict1 包含在 fdata_fs 中找到的列的子集

标签: r regression lapply


【解决方案1】:

这是因为glm 实际上并没有将公式中的x 更改为作为x 传递给您的函数的变量。假设 fsdata_dict1 包含您希望包含的变量的名称(作为字符串),您可以执行以下操作:

glm_func <- function(x){
f <- as.formula(paste("binge_dr ~", x, "+ Age_in_Yrs + Race + SSAGA_Income + SSAGA_Educ"))
 return(glm(f, family = binomial, data = fdata_fs, na.action = na.pass))
}

lapply(fsdata_dict1, glm_func)

【讨论】:

  • 谢谢!我现在收到一个错误,上面写着Error in str2lang(x) : &lt;text&gt;:1:31: unexpected symbol 1: binge_dr ~ FS_L_Bankssts_Area Age_in_Yrs ^ ,^ 低于 Age_in_Yrs。这是否表明年龄定义不正确?
  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多