Предположим, у меня есть этот фрейм данных:
df <- data.frame(GN1 = sample(1:10, 10 ,replace=TRUE),
GN2 = sample(1:10, 10 ,replace=TRUE),
GN3 = sample(1:10, 10 ,replace=TRUE),
E10 = sample(1:10, 10 ,replace=TRUE),
PSV7 = sample(1:10, 10 ,replace=TRUE),
PEC3 = sample(1:10, 10 ,replace=TRUE),
PEC4 = sample(1:10, 10 ,replace=TRUE),
AC6 = sample(1:10, 10 ,replace=TRUE),
AC7 = sample(1:10, 10 ,replace=TRUE),
stringsAsFactors = FALSE)
GN1 GN2 GN3 E10 PSV7 PEC3 PEC4 AC6 AC7
1 7 3 10 6 4 4 3 9 3
2 2 5 6 6 6 6 5 7 1
3 7 6 10 6 9 1 9 7 5
4 7 1 8 9 2 4 5 5 7
5 8 3 3 8 6 8 9 5 10
6 7 1 1 8 9 3 8 9 4
7 4 6 4 7 2 6 9 8 9
8 7 8 8 7 2 1 7 6 5
9 1 9 4 8 5 5 2 7 1
10 4 9 2 1 4 4 10 2 9
И я хочу запустить эту формулу:
c_SA=lm(formula = GN1 ~ ifelse(df2$if_a == 1,PEC3+PEC4+AC6,GN2+GN3+E10+PSV7+PEC3), data = df)
Где df2$if_a
- это внешнее значение из df
, и оно может принимать значения 0
или 1
(df2
имеет только одну строку). Как вы можете видеть выше, если df2$if_a == 1
мне нужно запустить первый «пакет» переменных, а если он равен 0, мне нужно запустить другой «пакет» переменных.
Я пытался as.formula()
и reformulate()
, но безуспешно:
c_SA=lm(formula = GN1 ~ ifelse(df2$if_a == 1,as.formula(PEC3+PEC4+AC6),as.formula(GN2+GN3+E10+PSV7+PEC3)), data = df)
Также есть несколько похожих вопросов ( 1 , 2 , 3 ). Однако они устанавливают подкадр данных в аргументе data =
, и мне нужно сделать аргумент formula =
подчиненным значению внешнего источника.
Есть предложения?