我正在Rstudio中工作,并且有一系列像这样的代码。总共有34个,我想知道是否有一种简单的方法可以只编写一次并使其遍历 rsqRow.a {#} , combineddfs.a {# } 和内部使用的 s _ {##'State'}
变量# s_WA.train.lr.Summary
rsqRow.a32 = summary(s_WA.train.lr)$r.squared
# rsqRow.a32
Coef = summary(s_WA.train.lr)$coef[,1] # row, column
CoefRows = data.frame(Coef)
Pval = summary(s_WA.train.lr)$coef[,4]
PvalRows = data.frame(Pval)
combineddfs.a32 <- merge(CoefRows, PvalRows, by=0, all=TRUE)
# combineddfs.a32
# s_WI.train.lr.Summary
rsqRow.a33 = summary(s_WI.train.lr)$r.squared
# rsqRow.a33
Coef = summary(s_WI.train.lr)$coef[,1] # row, column
CoefRows = data.frame(Coef)
Pval = summary(s_WI.train.lr)$coef[,4]
PvalRows = data.frame(Pval)
combineddfs.a33 <- merge(CoefRows, PvalRows, by=0, all=TRUE)
# combineddfs.a33
# s_WY.train.lr.Summary
rsqRow.a34 = summary(s_WY.train.lr)$r.squared
# rsqRow.a34
Coef = summary(s_WY.train.lr)$coef[,1] # row, column
CoefRows = data.frame(Coef)
Pval = summary(s_WY.train.lr)$coef[,4]
PvalRows = data.frame(Pval)
combineddfs.a34 <- merge(CoefRows, PvalRows, by=0, all=TRUE)
# combineddfs.a34
答案 0 :(得分:0)
正如注释中已经提到的那样,您应该将数据保存在列表中,以避免重复的过程。
找出代表全局环境中所有数据框名称的通用模式,并将其用作ls
中的模式以获取其名称的字符向量。然后,您可以使用mget
获取列表中的数据帧。
list_data <- mget(ls(pattern = 's_W.*train\\.lr'))
一旦有了数据帧列表,就可以使用lapply
对其进行迭代,并在函数中返回所需的值。请注意,可能有一种更简单的方法来编写尝试中的内容,但是由于我没有数据,因此我不会冒风险缩短代码。在这里,我为每个数据帧返回rsqRow
和combineddfs
。您可以根据自己的喜好添加/删除对象。
all_values <- lapply(list_data, function(x) {
rsqRow = summary(x)$r.squared
Coef = summary(x)$coef[,1]
CoefRows = data.frame(Coef)
Pval = summary(x)$coef[,4]
PvalRows = data.frame(Pval)
combineddfs <- merge(CoefRows, PvalRows, by=0, all=TRUE)
list(rsqRow, combineddfs)
})