Использование формулы в качестве аргумента ключевого слова (именованный параметр) с wilcox.test в R - PullRequest
3 голосов
/ 24 мая 2019

Почему я получаю ошибку, когда использую «формулу» в качестве аргумента ключевого слова с wilcox.test в R?Документы говорят, что у него есть параметр "формула".

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 ]

5 голосов
/ 24 мая 2019

Я думаю, что это сбивает с толку, потому что универсальный и метод формул используют разные имена для аргумента формулы, а именно, x и formula. Обычно при написании методов S3 имена аргументов методов должны соответствовать универсальному.

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

> args(stats:::wilcox.test.formula)
function (formula, data, subset, na.action, ...) 
NULL
1 голос
/ 24 мая 2019

Ваши аргументы не в правильном порядке.

> 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 - указал, что я ошибся в назначении аргументов формулы, поскольку без необязательного аргумента данных объекты данных будут унаследованы от среды. Функция выбирает метод по умолчанию вместо метода формулы, потому что она не видит аргумент формулы в расположении первого аргумента. В противном случае порядок аргументов не имеет значения.

...