簡體   English   中英

在R中嵌套替換

[英]Nested lapply with substitute in R

我創建了使用不同的變量多次運行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]]]) ),數據= mtcars)

如何使此嵌套循環起作用?

感謝您的建議Josh O'Brien! 這工作:

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)}))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM