繁体   English   中英

将dplyr函数中的purrr :: map应用于列表

[英]Apply purrr::map in dplyr functions into a list

我有这个清单:

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"))

我尝试在dplyr函数中使用purrr::map代替lapplyfunction(x) 我的代码:

mylist%>%
  lapply(function(x){
    group_by(x,kmeans)%>%
      mutate_if(is.numeric,sum)
  })

这是确定的lapplyfunction(x) 但是,在purrr::map中不起作用:

mylist%>%
  map(~group_by(.,kmeans))%>%
  mutate_if(is.numeric,sum)

purrr::map什么问题? *我需要使用不带function(x)此函数。

您可以将所有内容包装在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))

暂无
暂无

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

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