列表中的R dplyr计数
我不知道如何在列表中的R dplyr计数,r,list,R,List,我不知道如何在列表对象中正确地计数(或表) 因此,我的列表名为v,它有3个元素,是否可以避免执行以下操作 library(dplyr) v[[1]] %>% count(group, variable, value) v[[2]] %>% count(group, variable, value) v[[3]] %>% count(group, variable, value) 使用表的问题是,我必须对几个变量进行分组(这里是分组,变量和值) 带有表的解决方案,这不是很好
列表
对象中正确地计数
(或表
)
因此,我的列表
名为v
,它有3个元素,是否可以避免执行以下操作
library(dplyr)
v[[1]] %>% count(group, variable, value)
v[[2]] %>% count(group, variable, value)
v[[3]] %>% count(group, variable, value)
使用表
的问题是,我必须对几个变量进行分组(这里是分组
,变量
和值
)
带有表的解决方案
,这不是很好的输出
ft = function(x) table(x)
v %>% lapply(ft)
需要的输出量
[[1]] # list 1
group variable value n
1 V1 FALSE 1
1 V1 TRUE 2
1 V2 FALSE 2
1 V2 TRUE 1
...
[[2]] # list 2
group variable value n
1 V1 FALSE 1
1 V1 TRUE 2
1 V2 FALSE 3
1 V2 TRUE 3
...
# and so on #
生成数据
library(purrr)
library(reshape2)
v = list('vector', 3)
for(i in 1:3){
dt = replicate(10, rbernoulli(9)) %>% as.data.frame()
dt$group = rep(1:3, 3)
v[[i]] = dt %>% melt(id.vars = 'group')
}
我们可以使用
purr
包
library(dplyr)
library(purrr)
v %>%
map(~count(., group, variable, value))
#[[1]]
#Source: local data frame [56 x 4]
#Groups: group, variable [?]
# group variable value n
# <int> <fctr> <lgl> <int>
#1 1 V1 FALSE 1
#2 1 V1 TRUE 2
#3 1 V2 FALSE 2
#4 1 V2 TRUE 1
#5 1 V3 FALSE 3
#6 1 V4 FALSE 1
#7 1 V4 TRUE 2
#8 1 V5 TRUE 3
#9 1 V6 FALSE 2
#10 1 V6 TRUE 1
#.. ... ... ... ...
#[[2]]
#Source: local data frame [49 x 4]
#Groups: group, variable [?]
# group variable value n
# <int> <fctr> <lgl> <int>
#1 1 V1 FALSE 3
#2 1 V2 FALSE 2
#3 1 V2 TRUE 1
#4 1 V3 FALSE 2
#5 1 V3 TRUE 1
#6 1 V4 TRUE 3
#7 1 V5 TRUE 3
#8 1 V6 FALSE 1
#9 1 V6 TRUE 2
#10 1 V7 FALSE 1
#.. ... ... ... ...
#[[3]]
#Source: local data frame [54 x 4]
#Groups: group, variable [?]
# group variable value n
# <int> <fctr> <lgl> <int>
#1 1 V1 TRUE 3
#2 1 V2 FALSE 2
#3 1 V2 TRUE 1
#4 1 V3 FALSE 2
#5 1 V3 TRUE 1
#6 1 V4 TRUE 3
#7 1 V5 FALSE 1
#8 1 V5 TRUE 2
#9 1 V6 FALSE 2
#10 1 V6 TRUE 1
#.. ... ... ... ...
库(dplyr)
图书馆(purrr)
v%>%
映射(~计数(、组、变量、值))
#[[1]]
#来源:本地数据帧[56 x 4]
#组:组,变量[?]
#组变量值n
#
#1 V1假1
#2 1 V1真2
#3 1 V2假2
#4 1 V2真1
#5 1 V3错误3
#6 1 V4假1
#7 1 V4真实2
#8 1 V5 3
#9 1 V6 FALSE 2
#10 1 V6真1
#.. ... ... ... ...
#[[2]]
#来源:本地数据帧[49 x 4]
#组:组,变量[?]
#组变量值n
#
#1 V1假3
#2 1 V2假2
#3 1 V2真1
#4 1 V3假2
#5 1 V3真1
#6 1 V4真实3
#7 1 V5 3
#8 1 V6错误1
#9 1 V6真实2
#10 1 V7 FALSE 1
#.. ... ... ... ...
#[[3]]
#来源:本地数据帧[54 x 4]
#组:组,变量[?]
#组变量值n
#
#1 V1真3
#2 1 V2假2
#3 1 V2真1
#4 1 V3假2
#5 1 V3真1
#6 1 V4真实3
#7 1 V5错误1
#8 1 V5真实2
#9 1 V6 FALSE 2
#10 1 V6真1
#.. ... ... ... ...
注:在
purr_0.2.1
和purr_0.2.2
中工作的替代方案为lappy
:
v %>% lapply(count, group, variable, value)
甚至更短:
lapply(v, count, group, variable, value)
好的,甚至更短:
lappy(v,count,group,variable,value)
。在这种情况下,管道是不必要的,除非管道序列中有更多的函数调用。是的,对不起,我一直认为Hadley'suite包含在dplyr
中,但确实也有reforme2
中!为什么有2票被否决?