我知道在R中使用循环不是最佳实践。我经常无法让他们继续前进。我有一个数据框列表,我必须做一个重复的任务。
list_BG<- list(Education,Exp_intensity,Software_skills,Specialized,Common_Skills)
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。所有帮助表示赞赏。
答案 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
会更清晰 - 但我需要查看数据。