【发布时间】:2020-03-30 10:39:08
【问题描述】:
我正在为我的(工作的)R 脚本编写一个函数来清理我的代码。我没有编写函数的经验,但决定我应该花一些时间来做这件事。我的函数的目标是执行多个统计测试,同时只通过所需的数据框、定量变量和分组变量一次。但是,我无法让它发挥作用。供您参考,我将使用 ToothGrowth 数据框来说明我的问题。
假设我想在 len 上运行 Kruskal-Wallis 检验和单向方差分析,以比较名为 supp 的不同组,无论出于何种原因。我可以单独使用
kruskal.test(len ~ supp, data = ToothGrowth)
aov(len ~ supp, data = ToothGrowth)
现在我想编写一个执行这两个测试的函数。这是我认为应该起作用的:
stat_test <- function(mydata, quantvar, groupvar) {
kruskal.test(quantvar ~ groupvar, data = mydata)
aov(quantvar ~ groupvar, data = mydata)
}
但是如果我然后运行stat_test(ToothGrowth, "len", "sup"),我会得到错误
Error in kruskal.test.default("len", "supp") :
all observations are in the same group
我做错了什么?任何帮助将不胜感激!
【问题讨论】:
-
欢迎来到 SO!这是一个很好的第一个问题,它举例说明了您迄今为止尝试过的内容以及您遇到的具体错误。编写更好问题的一种方法是提供一小部分数据,以便我们可以重现您的错误,而无需猜测您的数据是什么样的。您可以使用
dput(head(mydata, 10))之类的内容来获取前十行。 -
@qdread
ToothGrowth在示例中给出。这是 R 中的一个内置数据集。但我同意你的观点,即这是一个很好的第一个问题。 -
好点,我没有注意到。所以这绝对是一个很好的第一个问题。