ATM*_*hew 17 for-loop r dataframe
我经常发现自己不得不在R中执行重复性任务.不得不一遍又一遍地在一个或多个数据结构上运行相同的函数,这非常令人沮丧.
例如,假设我在R中有三个独立的数据帧,我想删除每个具有缺失值的数据帧中的行.对于三个数据帧,在每个df上运行na.omit()并不是那么困难,但是如果有一百个类似的数据结构需要相同的动作,它就会变得非常低效.
df1 <- data.frame(Region=c("Asia","Africa","Europe","N.America","S.America",NA),
variable=c(2004,2004,2004,2004,2004,2004), value=c(35,20,20,50,30,NA))
df2 <- data.frame(Region=c("Asia","Africa","Europe","N.America","S.America",NA),
variable=c(2005,2005,2005,2005,2005,2005), value=c(55,350,40,90,99,NA))
df3 <- data.frame(Region=c("Asia","Africa","Europe","N.America","S.America",NA),
variable=c(2006,2006,2006,2006,2006,2006), value=c(300,200,200,500,300,NA))
tot04 <- na.omit(df1)
tot05 <- na.omit(df2)
tot06 <- na.omit(df3)
Run Code Online (Sandbox Code Playgroud)
处理R中重复性任务的一般指导原则是什么?
是的,我认识到这个问题的答案是针对一个人面临的任务,但我只是询问用户在有重复性任务时应该考虑的一般事项.
Hon*_*Ooi 20
作为一般准则,如果要将多个对象应用于相同的操作,则应将它们收集到一个数据结构中.然后你可以使用循环,[sl] apply等来一次完成操作.在这种情况下,而不是单独的数据帧df1
,df2
等等,你可以把它们放到数据帧的列表,然后运行na.omit
于所有的人:
dflist <- list(df1, df2, <...>)
dflist <- lapply(dflist, na.omit)
Run Code Online (Sandbox Code Playgroud)