迭代 R 中的公式元素
Iterate over formula elements in R
有没有办法在 R 中迭代公式?
我需要做的是假设我们有一个公式:as.formula(hp ~ factor(gear) + qsec + am)
我需要做的是遍历公式的元素所以我可以创建 3 个模型(3 个因为我们使用 3 个回归变量 - 没有计算假人)
我需要创建第一个模型 as.formula(hp ~ factor(gear))
,然后是 as.formula(hp ~ factor(gear) + qsec)
,最后是 as.formula(hp ~ factor(gear) + qsec + am)
我们能否以某种方式在一次迭代中只使用一个回归器,然后使用两个,什么时候使用三个?
我需要将此功能自动化,"hand" 方法不好
我的方法是:使用 sprintf
和 paste
(使用 collapse
选项)创建一个字符串,将其强制转换为公式,然后遍历要包含的元素.
elements <- c("factor(gear)", "qsec", "am")
for (i in 1:length(elements)) {
fmla <- as.formula(sprintf("hp ~ %s", paste(elements[1:i], collapse = " + ")))
print(fmla)
print(summary(lm(fmla, data = mtcars)))
}
如果您需要解析给定的公式,您可以在 运行 上面的循环之前执行类似的操作(可能需要针对您的特定设置进行修改):
library(stringr)
input_fmla <- "as.formula(hp ~ factor(gear) + qsec + am)"
temp <- str_remove_all(input_fmla, "(as.formula\([^ ]* ~ |\)$)")
elements <- trimws(str_split(temp, pattern = "\+")[[1]])
有没有办法在 R 中迭代公式?
我需要做的是假设我们有一个公式:as.formula(hp ~ factor(gear) + qsec + am)
我需要做的是遍历公式的元素所以我可以创建 3 个模型(3 个因为我们使用 3 个回归变量 - 没有计算假人)
我需要创建第一个模型 as.formula(hp ~ factor(gear))
,然后是 as.formula(hp ~ factor(gear) + qsec)
,最后是 as.formula(hp ~ factor(gear) + qsec + am)
我们能否以某种方式在一次迭代中只使用一个回归器,然后使用两个,什么时候使用三个?
我需要将此功能自动化,"hand" 方法不好
我的方法是:使用 sprintf
和 paste
(使用 collapse
选项)创建一个字符串,将其强制转换为公式,然后遍历要包含的元素.
elements <- c("factor(gear)", "qsec", "am")
for (i in 1:length(elements)) {
fmla <- as.formula(sprintf("hp ~ %s", paste(elements[1:i], collapse = " + ")))
print(fmla)
print(summary(lm(fmla, data = mtcars)))
}
如果您需要解析给定的公式,您可以在 运行 上面的循环之前执行类似的操作(可能需要针对您的特定设置进行修改):
library(stringr)
input_fmla <- "as.formula(hp ~ factor(gear) + qsec + am)"
temp <- str_remove_all(input_fmla, "(as.formula\([^ ]* ~ |\)$)")
elements <- trimws(str_split(temp, pattern = "\+")[[1]])