嵌套 lapply 替换为 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)))))
但是这会导致错误:
Error in substitute(scale(DV) ~ scale(IV) + scale(qsec), list(DV =
as.name(x)), : unused arguments (list(IV = as.name(X[[i]])), data =
mtcars)
如何使这个嵌套循环起作用?
感谢乔什·奥布莱恩的建议!这有效:
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)}))
我已经使用不同的变量多次为 运行 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)))))
但是这会导致错误:
Error in substitute(scale(DV) ~ scale(IV) + scale(qsec), list(DV = as.name(x)), : unused arguments (list(IV = as.name(X[[i]])), data = mtcars)
如何使这个嵌套循环起作用?
感谢乔什·奥布莱恩的建议!这有效:
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)}))