Я не увлекаюсь умелым бизнесом для правильных вопросов. И я думал, что код был читабельным и разумным. Если вы хотите немного затянуть его, вы можете отказаться от операции вставки (), используя «[[» и создав индекс внутри «[»:
ReorderDataByColumn2 <- function(x, column) {
return(x[ order( x[[column]]), ])
}
РЕДАКТИРОВАТЬ: Добавление предложения Хэдли (за исключением того, что я думаю, что вам также нужно сделать do.call):
ReorderDataByColumn2 <- function(x, column, desc=FALSE) {
return(
x[ do.call( order, x[ , column, drop=FALSE ] ), ]
) }
Вы можете добавить проверку ошибок, если хотите:
ReorderDataByColumn2 <- function(x, column) {
if(column %in% names(x)){return(x[ order( x[[column]]), ])
}else{ cat("Column ", column, "not in dataframe ", deparse(substitute(x))) }
}