将公式用作R中的wilcox.test的关键字参数(命名参数)

时间:2019-05-24 02:27:04

标签: r formula keyword-argument

为什么在R中使用wilcox.test作为关键字参数使用“公式”作为关键字时会出现错误?文档说它有一个“公式”参数。

df = data.frame(A=rnorm(10), D=sample(c('p','q'), 10, replace=T))
wilcox.test(data=df, A~D)
wilcox.test(data=df, formula=A~D)

> df = data.frame(A=rnorm(10), D=sample(c('p','q'), 10, replace=T))
> wilcox.test(data=df, A~D)

    Wilcoxon rank sum test

data:  A by D
W = 13, p-value = 1
alternative hypothesis: true location shift is not equal to 0

> wilcox.test(data=df, formula=A~D)
Error in wilcox.test.default(data = df, formula = A ~ D) : 
  argument "x" is missing, with no default

2 个答案:

答案 0 :(得分:4)

我认为这很困惑,因为泛型和公式方法为公式参数使用了不同的名称,即xformula。通常,在编写S3方法时,方法的参数名称应与通用参数一致。

> args(wilcox.test)
function (x, ...) 
NULL

> args(stats:::wilcox.test.formula)
function (formula, data, subset, na.action, ...) 
NULL

答案 1 :(得分:1)

您的参数顺序不正确。

> wilcox.test(formula=A~D, data=df)

    Wilcoxon rank sum test

data:  A by D
W = 13, p-value = 0.6667
alternative hypothesis: true location shift is not equal to 0

42-指出我对公式参数的用途不正确,因为如果没有可选的数据参数,则数据对象将从环境中继承。该函数选择默认方法而不是公式方法,因为它在第一个参数位置看不到公式参数。否则,参数顺序将无关紧要。