首页 > 解决方案 > 创建包含 table() 的 R 函数时出错

问题描述

我正在尝试创建一个包含 table() 函数的函数,但我一直返回错误"Error in table(df$var, df$arm) : all arguments must have the same length "。我已经尝试了所有替代选项来引用我能想到的列,但无济于事。

这是一个可复制的示例:

x <- c(0, 1, 0, 1)
arm <- c("A", "A", "B", "B")
study.df <- data.frame(x, arm, row.names = NULL)


f.table <- function(df, var) {
  p <- table(df$var, df$arm) %>%
    fisher.test(alternative = "two.sided") %>%
    .$p.value
  return(p)
}

f.table(study.df, x)

标签: rfunction

解决方案


您需要更改在函数var内部调用参数的方式,这是一个解决方案:

 f.table <- function(df, var) {
  p <-
    table(df[,var], df$arm) %>%
    fisher.test(alternative = "two.sided") %>%
    .$p.value
  return(p)
}

f.table(study.df, "x")

推荐阅读