Я работаю над требованием, когда мне нужно сгенерировать MAPE для нескольких прогнозируемых переменных.Для этого я использую функцию MAP для генерации сводной таблицы со значениями MAPE в data.table .Таким образом, результат вывода должен иметь 4 строки x 6 столбцов, 1 строку для каждого города и 1 столбец города, за которыми следуют a1, a2, a3, a4, a5, имеющие значения MAPE в каждой ячейке.
Ниже приведен пример данных и кода, которые я использую ( Примечание - считается a1, a2, a3 .... фактическим, а p1, p2, p3 ... прогнозируемым ) -
library(data.table)
set.seed(123)
id <- seq(1001,1100,1)
city <- sample(1:4,100,replace = T)
a1 <- sample(1:100,100,replace = T)
a2 <- sample(1:100,100,replace = T)
a3 <- sample(1:100,100,replace = T)
a4 <- sample(1:100,100,replace = T)
a5 <- sample(1:100,100,replace = T)
p1 <- sample(1:100,100,replace = T)
p2 <- sample(1:100,100,replace = T)
p3 <- sample(1:100,100,replace = T)
p4 <- sample(1:100,100,replace = T)
p5 <- sample(1:100,100,replace = T)
df1 <- as.data.table(data.frame(id,city,a1,a2,a3,a4,a5,p1,p2,p3,p4,p5))
sum1 <- df1[, Map(function(x,y) mean(as.numeric(abs(get(x)-get(y))/get(x))*100),
paste("a",1:5, sep = ""),
paste("p",1:5, sep = "")),by=city]
Теперь я хочу сгенерировать ту же сводку для строк, где x==y
затем x > y
и x < y
..... и самый простой способ сделать это, как мне кажется, это передатьэто в i , но как это сделать, что я не получаю ..... когда я пытаюсь передать его как function(x,y) get(x)==get(y)
, выдает ошибку
я не оценилк логическому, целому или двойному
Пожалуйста, предложите