错误所有select()输入必须解析为整数列位置。以下不:

时间:2017-01-11 09:48:54

标签: r dplyr

我正在尝试使用如下的dplyr计算,然后在我可以更改列名和数据集名称的函数中调用它。代码如下: -

sample_table <- function(byvar = TRUE, dataset = TRUE) {
  tcount <-
    df2 %>% group_by(.dots = byvar) %>% tally() %>% arrange(byvar) %>% rename(tcount = n) %>%
    left_join(
      select(
        dataset %>% group_by(.dots = byvar) %>% tally() %>% arrange(byvar) %>% rename(scount = n), byvar, scount
      ), by = c("byvar")
    ) %>%
    mutate_each(funs(replace(., is.na(.), 0)),-byvar %>% mutate(
      tperc = round(tcount / rcount, digits = 2), sperc = round(scount / samplesize, digits = 2),
      absdiff = abs(sperc - tperc)
    ) %>%
    select(byvar, tcount, tperc, scount, sperc, absdiff)
  return(tcount)
}

category_Sample1 <- sample_table(byvar = "category", dataset = Sample1)

我的函数名是sample_table。 错误消息如下: -

 Error: All select() inputs must resolve to integer column positions.
The following do not:
*  byvar

我知道这是一个重复的问题,我已经通过以下链接: - Function writing passing column reference to group_by Error when combining dplyr inside a function

我不确定我哪里出错了。任何帮助将非常感谢请。 rcount是df2中的行数,samplesize是“dataset”数据帧中的行数 我必须为具有三个不同“数据集”名称的另一个变量计算相同的东西。

1 个答案:

答案 0 :(得分:3)

您将列引用用作字符串(byvar)(标准评估)和常规参考(tcounttperc等)(非标准评估)。 确保您使用其中一项和相应的功能:select()select_()。您可以使用

解决问题
select(one_of(c(byvar,'tcount')))