【问题标题】:Nested lapply with substitute in R嵌套 lapply 与 R 中的替代品
【发布时间】:2019-07-26 11:39:58
【问题描述】:

我创建了代码以使用不同的变量多次运行 lm 命令:

DVs <- c('mpg', 'wt')

lapply(DVs, function(x)
  lm(substitute(scale(DV) ~ scale(disp)+scale(qsec), list(DV = as.name(x))), data=mtcars))

但是,我希望能够创建一个嵌套循环,以迭代另一个变量。我曾经尝试过的代码是:

DVs <- c('mpg', 'wt')
IVs <- c('disp', 'hp')

    lapply(DVs, function(x) lapply(IVs, function(y)
      lm(substitute(substitute(scale(DV) ~ scale(IV)+scale(qsec), list(DV = as.name(x)), list(IV = as.name(y)), data=mtcars)))))

但是这会导致错误:

替代错误(scale(DV) ~ scale(IV) + scale(qsec), list(DV = as.name(x)), : 未使用的参数 (list(IV = as.name(X[[i]])), data = 山地车)

我怎样才能使这个嵌套循环工作?

【问题讨论】:

  • 也许看看reformulate(),例如here.
  • 成功了,谢谢!

标签: r nested lapply lm


【解决方案1】:

感谢乔什·奥布莱恩的建议!这有效:

DVs <- c('mpg', 'wt')
IVs <- c('disp', 'hp')

lapply(DVs, function(x) lapply(IVs, function(y) {lm(reformulate(response=x, termlabels=y), data=mtcars)}))

我不知道如何在调用中扩展我的数据,但我可以扩展我的整个数据框:

mtcarsSC <- as.data.frame(scale(mtcars))

DVs <- c('mpg', 'wt')
IVs <- c('disp', 'hp')

lapply(DVs, function(x) lapply(IVs, function(y) {lm(reformulate(response=x, termlabels=y), data=mtcarsSC)}))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-09
    • 2020-06-05
    • 2015-11-24
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多