Я пытаюсь создать формулу из списка переменных в кадре данных, который в конечном итоге я буду вводить в решатель ODE из следующих данных:
+--------+--------+--------+---------+-------+-------+----------+
| React1 | React2 | React3 | Prod1 | Prod2 | Prod3 | k |
+--------+--------+--------+---------+-------+-------+----------+
| $OH | $OH | NA | H2O2 | NA | NA | 5.50E+09 |
| $OH | $HO2 | NA | H2O | O2 | NA | 7.10E+09 |
| $OH | $O2 | NA | OH | O2 | NA | 1.00E+10 |
| H2O2 | $OH | NA | $HO2 | H2O | NA | 2.70E+07 |
| $OH | HCO3 | NA | $CO3 | NA | NA | 8.50E+06 |
| $OH | CO2 | NA | $CO3 | NA | NA | 1.00E+06 |
| $OH | CO3 | NA | $CO3 | OH | NA | 3.90E+08 |
| $OH | $CO3 | NA | unknown | NA | NA | 3.00E+09 |
| Cl | $OH | NA | $ClOH | NA | NA | 4.30E+09 |
| $Cl2 | $OH | NA | HOCl | Cl | NA | 1.00E+09 |
| HOCl | $OH | NA | $ClO | H2O | NA | 2.00E+09 |
| ClO | $OH | NA | $ClO | OH | NA | 8.80E+00 |
+--------+--------+--------+---------+-------+-------+----------+
Цель состоит в том, чтобы получить уравнение изэтот фрейм данных, который умножает React1, React2, React3 и k из каждого столбца вместе, а затем суммирует весь этот столбец вместе (аналогично SUMPRODUCT в excel).Например:
Сумма знаменателя = 5.5E9 * $ OH * $ OH + 7.1E9 * $ OH * $ HO2 + ... 8.8E0 * CLO * $ OH
Я пробовалследующий код, который не работает, так как я пытаюсь применить бинарный оператор к нечисловым аргументам.
Reactants <- Reactants %>% mutate(
Sum = apply( Reactants, MARGIN = 1, Multiplication(React1,React2,React3,k), na.rm = TRUE)
)
Мой вопрос: как лучше всего это сделать?У меня есть ощущение, что я мог бы сделать это, используя функции as.formula
и paste
, но и здесь я сталкиваюсь с трудностями.Любой вклад будет принята с благодарностью.Более того, мне нужно будет объединить / объединить эту функцию с аналогичным уравнением для продуктов и включить все это в цикл for.