【问题标题】:R apply() function issue with custom function included包含自定义函数的 R apply() 函数问题
【发布时间】:2020-05-15 13:00:23
【问题描述】:

我编写了以下函数:

one_way_anova <- function(m, n, sample_means, sample_vars) {
  keskiarvo = 1/m*sum(sample_means)
  otosv = (sum((sample_means-keskiarvo)^2))/(m-1)
  TS = (n*otosv)/(sum(sample_vars)/m)
  parvo = 1-pf(TS, m-1, m*(n-1))
  return(parvo)
}

并使用以下数据:

set.seed(1)
dat <- matrix(rnorm(300*20), nrow=300)
sample_means <- matrix(rowMeans(dat), nrow=100)
sample_vars <- matrix(apply(dat, 1, var), nrow=100)
m <- nrow(sample_means)
n <- ncol(sample_means)

现在我尝试使用 apply -function 来计算“parvo”,我的函数 one_way_anova 用于数据集 sample_means 的单个行,包含三个样本(矩阵为 100x3)。 apply(sample_means, 1, one_way_anova)

这会出现以下错误 Error in FUN(newX[, i], ...) : argument "sample_means" is missing, with no default

【问题讨论】:

  • 也许是这个:apply(sample_means, 1, function(x) one_way_anova(x, m, n, sample_vars))

标签: r function apply


【解决方案1】:

由于您的函数one_way_anova 需要多个参数,如果您使用apply,则需要传递除sample_means 之外的所有其他参数。

如果您想在sample_meanssample_vars 中的行上运行它,也许您可​​以尝试sapply,如下所示

sapply(1:m,function(k) one_way_anova(m,n,sample_means[k,],sample_vars[k,]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    相关资源
    最近更新 更多