【问题标题】:Error in dplyr functiondplyr 函数中的错误
【发布时间】:2016-04-07 01:26:09
【问题描述】:
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”

【问题讨论】:

  • ka 定义在哪里?
  • @Amstell ka 是一个数据框,它具有存储在 form_name 中的行名
  • 实际上我想每次都按列分组。我有 6 列,所以我应用了循环
  • @Amstell group_by_(.dots=i) 没有按照我想要的方式工作

标签: r loops dplyr


【解决方案1】:

我们可以使用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))

【讨论】:

  • 上述函数只汇总了元素的总数。假设在一列 abc.A 我有“101”“120”“111”“101”“1010”。上面的函数将显示 n = 5 。而我想要列联表作为每个数字重复多少次
  • @DhwaniDholakia 请仔细检查。这就是您的代码所做的。
  • 我不知道在这个论坛上发布表格,否则我实际上可以发布表格及其结果
  • @DhwaniDholakia 如果你已经加载了 plyr 库和dplyr,请使用dplyr::summarise(
  • 上面编辑的解释非常有用。我会尝试再做一次
猜你喜欢
  • 2018-05-12
  • 1970-01-01
  • 2018-06-05
  • 2021-10-14
  • 2019-03-04
  • 2015-07-12
  • 2015-07-21
  • 1970-01-01
  • 2019-10-14
相关资源
最近更新 更多