简体   繁体   English

R apply() function 问题与自定义 function 包括

[英]R apply() function issue with custom function included

I have coded following function:我已经按照 function 进行了编码:

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)
}

And using following data:并使用以下数据:

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)

Now I try to use apply -function to calculate "parvo" with my function one_way_anova for dataset sample_means by individual rows with three samples (matrix is 100x3).现在我尝试使用apply -function 用我的 function one_way_anova为数据集sample_means计算“parvo”,每个行包含三个样本(矩阵为 100x3)。 apply(sample_means, 1, one_way_anova)

Which gives following error Error in FUN(newX[, i], ...): argument "sample_means" is missing, with no default这会Error in FUN(newX[, i], ...): argument "sample_means" is missing, with no default

Since your function one_way_anova needs multiple arguments, you need to pass all other arguments besides sample_means if you used apply .由于您的 function one_way_anova需要多个 arguments,因此如果您使用apply ,则需要传递除sample_means之外的所有其他 arguments 。

If you want to run it over rows in sample_means and sample_vars , maybe you can try sapply like below如果您想在sample_meanssample_vars中的行上运行它,也许您可以尝试sapply如下所示

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM