Оказывается, это довольно сложно, но вы можете получить динамическое имя столбца для оценки, используя call()
. Итак, следуя вашему примеру:
var <- "dist"
eval(call("h2o.arrange",df,var))
Дает:
speed dist
1 4 2
2 7 4
3 4 10
4 9 10
Тогда:
var <- "speed"
eval(call("h2o.arrange",df,var))
Дает:
speed dist
1 4 2
2 4 10
3 7 4
4 7 22
(Я бы хотел сказать, что это было первое, о чем я подумал, но это было больше похоже на эксперимент № 54! Я был на полпути вниз http://adv -r.had.co.nz / Expressions. html Могут быть и другие, лучшие способы достижения того же.)
Кстати, другой подход для достижения того же результата:
var = 1
h2o:::.newExpr("sort", df, var)
и
var = 0
h2o:::.newExpr("sort", df, var)
соответственно. То есть Третий аргумент - это нулевой индекс столбца. Вы можете получить , что с match(var, names(df)) - 1
. К этому моменту вы реализовали 75% h2o.arrange()
.
(Помните, что каждый раз, когда вы в конечном итоге используете h2o:::
, вы рискуете, что это не сработает в какой-то будущей версии H2O.)