R формула пасты - PullRequest
       58

R формула пасты

0 голосов
/ 30 октября 2019

Я хочу вставить формулу в R из двух разных векторов, у которых есть условие. Вставить формулу из вектора, содержащего коэффициенты, можно, но я не знаю, как добавить условные термины

Я пытался решить проблему с помощью paste и paste0

f1 <- c("x1", "x2", "x3")
f2 <- c("x3", "x4", "x5")

результат должен быть y ~ x1 + x2 + x3 | x3 + x4 + x5

Я должен управлять большим набором данных с> 100 коэффициентами, поэтому ввод его вручную не является реальным вариантом.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 30 октября 2019

Я думаю, это то, что вы ищете:

f1 <- c("x1", "x2", "x3") 
f2 <- c("x3", "x4", "x5")
paste("y ~ ",paste(f1, collapse = " + "),"|",paste(f2, collapse = " + "))

#output
#[1] "y ~ x1 + x2 + x3 | x3 + x4 + x5"
0 голосов
/ 30 октября 2019

Мы могли бы поместить термины в список

terms <- list(f1, f2)

и использовать reformulate().

fo <- reformulate(paste(sapply(terms, paste, collapse=" + "), collapse=" | "), response="y")
fo
# y ~ x1 + x2 + x3 | x3 + x4 + x5

Преимущество заключается в следующем:

class(fo)
# [1] "formula"

Данные

f1 <- c("x1", "x2", "x3")
f2 <- c("x3", "x4", "x5")
...