繁体   English   中英

如何从 R 中的数据帧的多重计算创建表

[英]How to create table from multi computations from data frames in R

我正在尝试应用模拟计算来评估 RMSE。 我有十个没有缺失值的数据框df1, df2, df3, ..., dm10并且每个数据框都包含三个变量,例如df1$x, df1$y, df1$z 然后,我从原始数据帧 ('''df''') 中生成一些缺失率以创建dm1, dm2, dm3, dm4, ..., dm10 我使用mice package 运行多个缺失插补,使用dm1, dm2, dm3, ..., dm10估计缺失值,然后生成完整的数据帧,即pm1, pm2, pm3, pm4, ..., pm10 我想运行一个循环 function 为每个数据帧集中的每个变量创建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)

艾哈迈德,将您的两组数据框放入两个列表中

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)

进入一个运行单个案例的 function

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

使用测试输入运行run1case 例如,调用

run1case(df2, dm2, "x")

直到它看起来很坚固。 如果运行时间超过一分钟,请考虑构建dfdm的小型测试版本。

添加另一个 function

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

同样,使用dfdm的单个值对此进行测试,直到获得良好的执行 - 这将是 3 次一起运行。

最后,运行整个事情

rezult <- map2_df( dfList , dmList, runSlice)

不跑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM