Como passo variáveis para uma função personalizada no ddply?

Considere os seguintes dados:

d = data.frame(
    experiment = as.factor(c("foo", "foo", "foo", "bar", "bar")),
    si = runif(5),
    ti = runif(5)
)

Eu gostaria de realizar um teste de correlação parasi eti, para cadaexperiment nível de fator. Então pensei em correr:

ddply(d, .(experiment), cor.test)

Mas como passo os valores desi eti aocor.test ligar? Eu tentei isso:

> ddply(d, .(experiment), cor.test, x = si, y = ti)
Error in .fun(piece, ...) : object 'si' not found
> ddply(d, .(experiment), cor.test, si, ti)
Error in match.arg(alternative) : 
  'arg' must be NULL or a character vector

Há algo óbvio que estou perdendo? oplyr a documentação não inclui nenhum exemplo para mim. A maioria dos comandos que vejo envolvem apenassummarize como a chamada de função, mas fazendo as coisas habituais que eu estava acostumado a fazersummarize não funciona, como pode ser visto acima.

questionAnswers(2)

yourAnswerToTheQuestion