Как создать таблицу из нескольких вычислений из фреймов данных в R - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь применить расчет моделирования для оценки RMSE. У меня есть десять фреймов данных без пропущенных значений df1, df2, df3, ..., dm10, и каждый из них содержит три переменные, например df1$x, df1$y, df1$z. Затем я генерирую некоторые недостающие частоты из исходных кадров данных ('' 'df' ''), чтобы создать dm1, dm2, dm3, dm4, ..., dm10. Я выполнил несколько отсутствующих вменений, используя пакет mice, чтобы оценить недостающие значения, используя dm1, dm2, dm3, ..., dm10, затем я генерирую полные фреймы данных, которые составляют pm1, pm2, pm3, pm4, ..., pm10. Я хочу запустить функцию al oop, чтобы создать rmse для каждой переменной из каждого набора фреймов данных, все результаты должны быть собраны в одной таблице, используя следующее:

первая строка - это ответ:

library(DMwR)
actuals <- df1$x[is.na(dm1$x)]
predicteds <- pm1[is.na(dm1$x), "x"]
regr.eval(actuals, predicteds)

вторая строка является ответом:

actuals <- df1$y[is.na(dm1$y)]
predicteds <- pm1[is.na(dm1$y), "y"]
regr.eval(actuals, predicteds)

третья строка является ответом:

actuals <- df1$y[is.na(dm1$z)]
predicteds <- pm1[is.na(dm1$z), "z"]
regr.eval(actuals, predicteds)

четвертая строка является ответом:

actuals <- df2$x[is.na(dm2$x)]
predicteds <- pm2[is.na(dm2$x), "x"]
regr.eval(actuals, predicteds)

. . . .

последняя строка - это ответ:

actuals <- df10$z[is.na(dm10$z)]
predicteds <- pm10[is.na(dm10$z), "z"]
regr.eval(actuals, predicteds)

1 Ответ

0 голосов
/ 26 мая 2020

Ахмад, поместите свои два набора фреймов данных в два списка

dfList = list(df1, df2, df3, ..., dm10)
dmList = list(dm1, dm2, dm3, dm4, ..., dm10)

Превратите этот код:

actuals <- df1$x[is.na(dm1$x)]
predicteds <- pm1[is.na(dm1$x), "x"]
regr.eval(actuals, predicteds)

в функцию, которая выполняет один регистр

run1case <- function(df, dm, xyz){
  <your code here>
}

Запуск run1case с тестовыми входами. Например, звоните

run1case(df2, dm2, "x")

, пока не наберется solid. Если запуск занимает больше, скажем, минуты, подумайте о создании небольших тестовых версий df и dm.

Добавьте еще одну функцию

runSlice <- function(df, dm){
   map_df(c("x","y","z"), ~ run1case(df, dm, .))
}

Опять же, проверьте это с помощью одиночные значения df и dm до тех пор, пока вы не получите хорошее выполнение - это будет 3 запуска вместе.

Наконец, запустите все это

rezult <- map2_df( dfList , dmList, runSlice)

НЕ ЗАПУСК

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...