r - 使用粘贴制作公式
问题描述
我正在尝试使用 R 制作公式。
我有以下数据:
data(iris)
iris <- iris %>%
select(Species, everything())
我正在尝试formula
根据 colnames 制作一个。我希望公式看起来像formula <- y ~ x1 + x2 + x3 + x4
. 我可以使用以下内容来获取 X 变量。
paste("X", seq(2:ncol(iris)), sep = "")
如何在它们之前粘贴 y ~ 并添加+
?我可以使用collapse
,但我希望~
和+
在同一个公式中。
解决方案
如果我们首先使用以下或类似的方法重命名和重新排列列,这将很简单
library(dplyr)
df <- iris %>%
select(Species, everything()) %>%
rename_all(~paste0("X", seq_along(.) - 1)) %>%
rename(Y = 1)
然后我们可以使用reformulate
like
reformulate(names(df)[-1], names(df)[1])
#Y ~ X1 + X2 + X3 + X4
我们也可以paste0
根据喜好创建一个字符串,然后使用as.formula
as.formula(paste0("Y ~ ", paste0(names(df)[-1], collapse = " + ")))
#Y ~ X1 + X2 + X3 + X4
推荐阅读
- c++ - 检查我们是否枚举了所有结构成员
- ansible - 如何在条件下将变量与具有字符串值的其他变量进行比较
- python - Python 字符串操作 - 拆分、切片、从 HEX 转换为 DEC
- php - 我可以在 __construct() 中为 SplSubject 实现的类调用 notify() 方法吗?
- okta - SCIM 协议是否需要对组的支持,如果您的应用程序没有组的概念,您如何处理它?
- c++ - 如何根据STL中类的参数找到指向类的指针?
- python - 用另一个txt文件的内容替换txt文件中的字符串(正则表达式)
- node.js - 在节点 js 中使用动态数据创建图像
- flutter - 适合儿童尺寸的颤振 SliverToBoxAdapter
- python - 当“if”在 Pandas Python CSV 中传递时,从同一行中的另一列获取值