在R lapply中从循环更改为函数

时间:2018-05-23 00:22:05

标签: r function loops lapply

我知道在R中使用循环不是最佳实践。我经常无法让他们继续前进。我有一个数据框列表,我必须做一个重复的任务。

这是清单

  list_BG<- list(Education,Exp_intensity,Software_skills,Specialized,Common_Skills)

到目前为止,我已手动完成任务

示例1:

 Education_sum <-Education %>% 
   mutate(ANZSCO4_CODE = as.numeric(substr(ANZSCO4_CODE, 1, 3)))%>%
   group_by(ANZSCO4_CODE) %>%
   summarise_all(funs(mean))

然后我尝试了循环并失败

 for (i in list_BG) {
   Gen[[i]]<- i %>% 
     mutate(ANZSCO4_CODE = as.numeric(substr(ANZSCO4_CODE, 1, 3)))%>%
     group_by(ANZSCO4_CODE) %>%
     summarise_all(funs(mean))

}

那么问题是;为什么我的循环失败?第二,我怎么能把这个循环变成一个创建我正在尝试创建的5个数据帧的fuicntion。所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

当您使用void reverseLinkedList(Node&* head) // changes made in head will be // reflected in original head pointer for (i in list_BG)实际上是整个元素(data.frame),然后您尝试使用相同的i来创建列表i

您应该使用Gen来创建索引以进行迭代:

seq_along

您可以使用# data df_list <- split(iris, iris$Species) # using a for loop with seq_along ans1 <- list() for (i in seq_along(df_list)) { ans1[[i]] <- df_list[[i]] # additional processing goes here } # using lapply, does not require any index in this case ans2 <- lapply(df_list, function(x) { x # additional processing goes here }) ,但我也怀疑purrr::map()的组合,更新您的dplyr::bind_rows会更清晰 - 但我需要查看数据。