我有这个列表:
mylist=structure(list(`1` = structure(list(var1 = c(33.1884311512113,
34.3367128074169, 46.1769648082554, 65.8136370964348), var2 = c(95.4996081255376,
88.2967706210911, 82.7290896326303, 95.4127290844917), kmeans = structure(c(1L,
1L, 1L, 1L), .Label = c("1", "2", "3"), class = "factor")), .Names = c("var1",
"var2", "kmeans"), row.names = c(NA, -4L), class = c("tbl_df",
"tbl", "data.frame")), `2` = structure(list(var1 = c(41.0386378876865,
51.3533580489457, 33.2395000942051, 30.9116746112704), var2 = c(62.3894362896681,
64.3969475477934, 38.5772223211825, 43.388062492013), kmeans = structure(c(2L,
2L, 2L, 2L), .Label = c("1", "2", "3"), class = "factor")), .Names = c("var1",
"var2", "kmeans"), row.names = c(NA, -4L), class = c("tbl_df",
"tbl", "data.frame")), `3` = structure(list(var1 = c(50.5543508939445,
63.059715218842), var2 = c(35.3626389987767, 20.2830202504992
), kmeans = structure(c(3L, 3L), .Label = c("1", "2", "3"), class = "factor")),
.Names = c("var1",
"var2", "kmeans"), row.names = c(NA, -2L), class = c("tbl_df",
"tbl", "data.frame"))), .Names = c("1", "2", "3"))
我尝试在purrr::map
函数中将lapply
与function(x)
一起使用dplyr
。我的代码:
mylist%>%
lapply(function(x){
group_by(x,kmeans)%>%
mutate_if(is.numeric,sum)
})
lapply
与function(x)
没关系。但是,在purrr::map
中不起作用:
mylist%>%
map(~group_by(.,kmeans))%>%
mutate_if(is.numeric,sum)
purrr::map
怎么了? *我需要在没有function(x)
的情况下使用此功能。
答案 0 :(得分:2)
您可以将所有内容包装在map
map(mylist, ~ group_by(.,kmeans)%>%
mutate_if(is.numeric,sum))
# Groups: kmeans [1]
# var1 var2 kmeans
# <dbl> <dbl> <fct>
#1 180. 362. 1
#2 180. 362. 1
#3 180. 362. 1
#4 180. 362. 1
#$`2`
# A tibble: 4 x 3
# Groups: kmeans [1]
# var1 var2 kmeans
# <dbl> <dbl> <fct>
#1 157. 209. 2
#2 157. 209. 2
#3 157. 209. 2
#4 157. 209. 2
#$`3`
# A tibble: 2 x 3
# Groups: kmeans [1]
# var1 var2 kmeans
# <dbl> <dbl> <fct>
#1 114. 55.6 3
#2 114. 55.6 3
或通过公式调用
mylist%>%
map(~group_by(., kmeans) %>%
mutate_if(is.numeric,sum))