从公式中提取所有唯一变量
extract all unique variables from a formula
我将 lm()
模型的公式存储为 chr
变量,我尝试将公式中的所有变量提取到向量中。
为了使其可复制,使用 mtcars
变量:mpg
、cyl
和 drat
(并且我的公式具有示例中的转换等)
model_string <- "mpg ~ cyl + I(abs(0.5-drat)) + I((0.5 - drat)^2)"
我想要的输出是:
vars_used <- c("mpg", "cyl", "drat")
到目前为止,我所做的是:
library(tidyverse)
vars_used <- model_string %>%
str_extract_all(pattern = "\w+") %>%
pluck(1) %>%
str_remove_all(pattern = "[0-9]")
vars_used
[1] "mpg" "cyl" "I" "abs" "" "" "drat" "I" "" "" "drat" ""
有没有更简单的方法来完成我想做的事情,尤其是使用 tidytext?
我还需要删除向量中的空字符串,还要删除重复项。
基础包有一个功能:
all.vars(as.formula(model_string))
#[1] "mpg" "cyl" "drat"
在这种情况下,您不应使用文本处理。
我将 lm()
模型的公式存储为 chr
变量,我尝试将公式中的所有变量提取到向量中。
为了使其可复制,使用 mtcars
变量:mpg
、cyl
和 drat
(并且我的公式具有示例中的转换等)
model_string <- "mpg ~ cyl + I(abs(0.5-drat)) + I((0.5 - drat)^2)"
我想要的输出是:
vars_used <- c("mpg", "cyl", "drat")
到目前为止,我所做的是:
library(tidyverse)
vars_used <- model_string %>%
str_extract_all(pattern = "\w+") %>%
pluck(1) %>%
str_remove_all(pattern = "[0-9]")
vars_used
[1] "mpg" "cyl" "I" "abs" "" "" "drat" "I" "" "" "drat" ""
有没有更简单的方法来完成我想做的事情,尤其是使用 tidytext?
我还需要删除向量中的空字符串,还要删除重复项。
基础包有一个功能:
all.vars(as.formula(model_string))
#[1] "mpg" "cyl" "drat"
在这种情况下,您不应使用文本处理。