Создавайте списки или таблицы формул, используя векторы X и Y

Мне нужно создать список формул, которые позже будут использоваться в функции карты. У меня есть векторы Y и X

X <- c("A", "B", "C")
Y <- c("X", "L", "Z")

и хотите использовать эти векторы для получения вывода в виде 3 разных списков длиной 9 или тиббла с желаемым выводом, показанным ниже. Можем ли мы использовать rep(X, n) для получения нескольких записей X и !(X %in% "C") для удаления C, когда Y == L и B, когда Y == Z и reformulate(X,Y), для создания формулы?

введите описание изображения здесь


person Geet    schedule 18.04.2018    source источник


Ответы (1)


Это создаст ваш целевой результат за один раз:

# X <- c("A", "B", "C")
# Y <- c("X", "L", "Z")

data.frame(Y = rep(Y, each = 3), 
           X = I(rep(append(list(X), 
                            c(data.frame(combn(X, 2)[1:2, 1:2], 
                                     stringsAsFactors = F))), each = 3))) %>% 
  rowwise() %>% 
  mutate(formula = paste("X ~", paste(X, collapse = " + "))) %>% 
  data.frame()

#   Y       X       formula
# 1 X A, B, C X ~ A + B + C
# 2 X A, B, C X ~ A + B + C
# 3 X A, B, C X ~ A + B + C
# 4 L    A, B     X ~ A + B
# 5 L    A, B     X ~ A + B
# 6 L    A, B     X ~ A + B
# 7 Z    A, C     X ~ A + C
# 8 Z    A, C     X ~ A + C
# 9 Z    A, C     X ~ A + C
person cmaher    schedule 18.04.2018