Создание формулы с использованием пасты - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь составить формулу, используя R.

У меня есть следующие данные:

data(iris)
iris <- iris %>%
  select(Species, everything())

Я пытаюсь создать formula на основе имен столбцов.Мне бы хотелось, чтобы формула выглядела как formula <- y ~ x1 + x2 + x3 + x4.Я могу использовать следующее для получения переменных X.

paste("X", seq(2:ncol(iris)), sep = "")

Как я могу вставить y ~ перед ними и добавить +?Я могу использовать collapse, но я бы хотел, чтобы ~ и + были в одной формуле.

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

Будет просто, если мы сначала переименуем и перегруппируем столбцы, используя приведенное ниже, или что-то подобное

library(dplyr)
df <- iris %>%
        select(Species, everything()) %>% 
        rename_all(~paste0("X", seq_along(.) - 1)) %>%
        rename(Y = 1)

Затем мы могли бы использовать reformulate подобно

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
1 голос
/ 27 сентября 2019

Мы можем использовать reformulate

reformulate(paste0("X",  head(seq_along(iris), -1)), "y")
#y ~ X1 + X2 + X3 + X4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...