Преобразование строк в объекты формул в Julia
У меня есть датафрейм в Юлии с менее чем 10 именами столбцов. Я хочу создать список всех возможных формул, которые могут быть введены в линейную модель (например, [Y~X1+X2+X3, Y~X1+X2, ....]
). Я могу сделать это легко с комбинациями () и строковыми версиями имен столбцов. Тем не менее, когда я пытаюсь преобразовать строки в объекты формулы, происходит сбой. Глядя на документацию DataFrames.jl, кажется, что можно строить формулы только из "выражений", и я действительно могу составить список имен отдельных столбцов в качестве выражений. Можно ли каким-то образом соединить кучу разных выражений программно с помощью оператора "+", чтобы полученное составное выражение затем можно было передать в RHS конструктора Formula? Мой импульс - поиск какой-нибудь функции, которая преобразует произвольную строку в эквивалентное выражение, но не уверен, что это правильно.
1 ответ
Функция parse берет строку, анализирует ее и возвращает выражение. Я не вижу ничего плохого в том, чтобы использовать это для того, о чем ты говоришь.
Вот фактический рабочий код, потому что я боролся с тем, чтобы аналогичная проблема работала. Обратите внимание, что это версия Julia 1.3.1, поэтомуparse
сейчас Meta.parse
и вместо combinations
я использовал IterTools.subsets
.
using RDatasets, DataFrames, IterTools, GLM
airquality = rename(dataset("datasets", "airquality"), "Solar.R" => "Solar_R")
predictors = setdiff(names(airquality), [:Temp])
for combination in subsets(predictors)
formula = FormulaTerm(Term(:Temp), Tuple(Term.(combination)))
if length(combination) > 0
@show lm(formula, airquality)
end
end