dplyr函数中的错误

3
form_name = [1] "abc.A"    "abc.A.1"  "abc.B"    "abc.B.1"  "abc.DR"   "abc.DR.1"

library(dplyr)
dd <- list(NULL)
for(i in form_name){
dd[[i]] <- ka %>% group_by(i) %>% summarise(n= n())
}

当我在dplyr函数上应用循环时,它显示错误:

错误:未知列'i'


1
ka 定义在哪里? - steveb
@Amstell ka 是一个数据框,其中的行名存储在 form_name 中。 - Dhwani Dholakia
实际上,我想每次按列分组。我有6个列,所以我应用了循环。 - Dhwani Dholakia
@Amstell,group_by_(.dots=i)的工作方式不符合我的期望。 - Dhwani Dholakia
1个回答

4
我们可以使用group_by_(.dots=i)。我们创建一个NULL列表('dd'),并将names设置为'form_name',然后循环遍历'form_name',并按照上述方式更改group_by
dd <- setNames(vector('list', length= length(form_name)), form_name)
for(i in form_name){
  dd[[i]] <- ka %>%
                 group_by_(.dots=i) %>%
                 summarise(n=n())
}

dd
#$abc.A
#Source: local data frame [3 x 2]

#   abc.A     n
#  (fctr) (int)
#1      A     2
#2      B     2
#3      C     2

#$abc.B
#Source: local data frame [2 x 2]

#   abc.B     n
#  (fctr) (int)
#1      D     3
#2      E     3

数据

form_name <- c('abc.A', 'abc.B')
ka <- data.frame(abc.A= rep(LETTERS[1:3], 2), 
                   abc.B= rep(LETTERS[4:5], each=3))

我不知道如何在本论坛中发布表格,否则我本可以实际上发布表格及其结果。 - Dhwani Dholakia
如果您已经加载了dplyr库以及plyr库,请使用dplyr::summarise( - akrun
$HLA.A Source: 本地数据框 [25 x 2] HLA.A n
(fctr) (int)
1 4 2 101 23
3 1101 30
4 143 1
5 201 9
6 203 2 7 205 4 8 206 3 9 211 7 10 2314 1 .. ... ... . 当前无法查看超过10行的内容,如何查看?
- Dhwani Dholakia
如何查看最后几行。它只显示最多10行。 - Dhwani Dholakia
@DhwaniDholakia 你可以使用lapply(dd, as.data.frame)或者lapply(dd, function(x) head(x, 20)) - akrun
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接