r - 将逗号分隔的向量转换为由 + 分隔的预测变量列表
问题描述
我想将我手动创建的逗号分隔向量直接传递给 glm 模型。该模型需要用加号分隔预测变量,所以我想知道当我将向量传递给模型+
时,是否有一种聪明的方法可以用 s 替换,
s ?+
例如,假设我有这两个向量:
fruits <- c('apples', 'bananas', 'pears', 'apricots')
colors <- c('blue', 'red', 'orange', 'purple')
目前,我只是复制预测变量并+
手动添加符号。例如
glm(dependent_var ~ apples + bananas + pears + apricots + blue + red + orange + purple, data = df, family = "binomial")
我想做的是找到一种方法来减少手动操作。例如,有没有一种方法可以让我基本上只复制向量名称本身?就像是
glm(dependent_var ~ fruits + colors, data = df, family = "binomial")
解决方案
您可以将模型输入粘贴在一起并将其转换为公式对象。
这是一个例子:
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
x1 <- c("cyl", "disp")
x2 <- c("drat", "wt")
y <- "mpg"
my_formula <- as.formula(paste0(y, "~", paste0(c(x1, x2), collapse = "+")))
# "my_formula" gives:
# mpg ~ cyl + disp + drat + wt
lm(my_formula, data = mtcars)
Call:
lm(formula = my_formula, data = mtcars)
Coefficients:
(Intercept) cyl disp drat wt
41.160271 -1.786074 0.007472 -0.010492 -3.638075
推荐阅读
- python - Pandas - 召回特定组的最早值
- javascript - jQuery each() 不能在内部使用 click()
- html - 多个页面上的 Facebook 评论插件?
- functional-programming - 在标准 ML 列表中查找中间元素
- mysql - 计算日期和月份字段还剩多少天
- python - python pandas - 帮助处理大量数据
- php - 流明路线给出重复的前缀
- python - 使用 matplotlib 拟合回归曲面的 3D 图
- c# - .showdialog() 运行后,有没有办法让用户仍然至少最小/最大/移动父窗口?
- python - 如何通过迭代创建其他 numpy 数组的 numpy 数组?