【问题标题】:Error All select() inputs must resolve to integer column positions. The following do not:错误所有 select() 输入必须解析为整数列位置。以下不:
【发布时间】:2017-01-11 09:48:54
【问题描述】:

我正在尝试如下使用 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

我知道这是一个重复的问题,我浏览了以下链接:

我不确定我哪里出错了。 rcount 是 df2 中的行数,samplesize 是“数据集”数据框中的行数。我必须为另一个具有三个不同“数据集”名称的变量计算相同的东西。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    您将列引用用作字符串 (byvar)(标准评估)和普通引用(tcount、tperc 等)(非标准评估)。 确保使用两者之一和适当的功能:select() 或 select_()。您可以使用

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

    【讨论】:

    • 我遇到了同样的问题,无法弄清楚如何解决它。几周前它正在使用mutate_each(funs(as.numeric), matches("name")),但现在它抛出了一个错误。有什么想法吗?
    • 你试过mutate_at 吗?否则我建议提出一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2021-01-29
    • 2019-09-22
    • 2018-06-12
    相关资源
    最近更新 更多