创建一个数据帧列表,而不是将单个数据帧作为对象创建,因为循环 db1、db2、db3 更难,而不是创建更容易在列表中循环的数据帧。这里创建的 dfs 基本上是您可以在其上创建模型的数据框列表。现在,我在这里使用 mtcars 创建了随机数据集,在您的情况下,您可能已经将数据集保存为 db1、db2 或 db3,因此您可以执行以下任一操作:
a) dfs = list(db1, db2, db3) 将此 dfs 与 lapply 一起使用,如下所示:mymodels <- lapply(dfs, function(x)lm(mpg ~ wt, data=x))
b) dfs <- mget(ls(pattern='^db\\d+'), envir = globalenv()) ,在这里你把你的数据模式放在模式里面,在这种情况下,它以 db 单词开头并以数字结尾,现在使用与上面类似的 lapply:mymodels <- lapply(dfs, function(x)lm(mpg ~ wt, data=x))
我从 mtcars 数据中给出了一个示例,使用随机选择的行来提出一种方法。
# Creating a list of data-frames randomly
# Using replicate function n(3) times here and picking 80% of data randomly, using seed value 1 for reproducibility
set.seed(1)
n <- 3
prop = .8
dfs <- lapply(data.frame(replicate(n, sample(1:nrow(mtcars), prop*nrow(mtcars)))), function(x)mtcars[x,])
## replicate function here replicates sample command n number of times and create a matrix of indexs of rows taken as different data points from mtcars dataset
mymodels <- lapply(dfs, function(x)lm(mpg ~ wt, data=x)) #mymodels is your output
输出:
$X1
Call:
lm(formula = mpg ~ wt, data = x)
Coefficients:
(Intercept) wt
38.912167 -5.874795
$X2
Call:
lm(formula = mpg ~ wt, data = x)
Coefficients:
(Intercept) wt
37.740419 -5.519547
$X3
Call:
lm(formula = mpg ~ wt, data = x)
Coefficients:
(Intercept) wt
39.463332 -6.051852