Я хочу преобразовать числовое значение в коэффициент, если значение ниже -2, тогда «вниз» должно быть фактором, если оно выше 2, а затем «вверх» и между «no_change»:Как применить функцию к каждому элементу data.frame?
До сих пор Я думал о создании функции:
classifier <- function(x){
if (x >= 2){
return(as.factor("up"))
}else if (x <= -2){
return(as.factor("down"))
}else {
return(as.factor("no_change"))
}
}
Я мог бы сделать это итерацию (с цикл) на входе и возвращает список, так что я мог бы использовать его с применить.
Я хочу применить эту функцию к всем ячейкам data.frame, как я могу это сделать?
фиктивные данные (runif(15, min=-5, max=5)
):
c(1.11004611710086, -1.86842617811635, 1.72159335808828, -2.68788822228089,
2.72551498375833, 3.67290901951492, -4.00984475389123, -2.39582793787122,
4.22395745059475, -0.360892189200968, 1.35027756914496, 2.89919016882777,
-0.158692332915962, -0.950306688901037, 3.39141107397154)
Надеюсь, это самое быстрое решение, но для этого функция предназначена для этих случаев. Спасибо, что указали это. – Llopis
@ Llopis. Нет. Я не тестировал, но я уверен, что ответ Рхартеля будет быстрее. Это просто базовое подмножество, которое было бы очень эффективным. – A5C1D2H2I1M1N2O1R2T1
Я бы с удовольствием посмотрел в этом тесте, мои данные. Кадры могут иметь 20532 строки и 1000 столбцов ... и чем быстрее, тем лучше :) – Llopis