[英]How apply dplyr functions into a list-column?
My list-column
: 我的
list-column
:
library(tidyverse)
dataset<-as_tibble(matrix(rnorm(6*30,1000,100),ncol=6))
cluster<-kmeans(dataset,centers=3)
dataset$kmeans<-as.factor(cluster[['cluster']])
mylist<-split(dataset,dataset$kmeans)
names(mylist)<-str_c('dataset',seq_along(mylist))
obj<-dataset%>%
group_by(kmeans)%>%
nest()
I try: 我尝试:
obj%>%
summarise_if(.data,is.numeric,sum)
Error: Can't convert a list to function
错误:无法将列表转换为函数
and 和
obj%>%
map(~summarise_if(.data,is.numeric,sum))
Error in UseMethod("tbl_vars") : no applicable method for 'tbl_vars' applied to an object of class "rlang_data_pronoun"
UseMethod(“ tbl_vars”)中的错误:没有适用于“ tbl_vars”的适用方法应用于类“ rlang_data_pronoun”的对象
among other attempts... 在其他尝试中...
So, how do I apply dplyr
functions into a list-column
? 那么,如何将
dplyr
函数应用于list-column
?
A solution is use dplyr::pull
in list-column ( obj$data
): 一种解决方案是在列表列(
obj$data
)中使用dplyr::pull
:
library(tidyverse)
obj%>%
pull(data)%>%
map(~summarise_if(.,is.numeric,sum))
[[1]]
# A tibble: 1 x 6
V1 V2 V3 V4 V5 V6
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 12865. 11787. 12864. 13443. 12548. 13170.
[[2]]
# A tibble: 1 x 6
V1 V2 V3 V4 V5 V6
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 11655. 12197. 11379. 10023. 10659. 11154.
[[3]]
# A tibble: 1 x 6
V1 V2 V3 V4 V5 V6
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 5175. 6053. 6855. 6130. 6504. 5967.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.