Just checked. To get lapply to work for the both functions, I have to convert the matrix M into a dataframe. Trying it with apply for the matrix works perfectly fine. The missing x was the problem

So here my improved code.

require(Deducer)    #Package for perm.t.test

c(rep("A", 5), rep("B", 5))->Faktor

matrix(rnorm(100, mean=20, sd=4), nrow=10, ncol=10)->M

colnames(M) <- c("species1","species2", "species3","species4","species5","species6","species7","species8","species9", "species10")

###Conventional T-Test to test for differences of each species per factor
as.data.frame(M)->M2

apply(
  M, 2, function(x)
  t.test(x~ Faktor)
  )

lapply(
  M2,  function(x)
  t.test(x~ Faktor)
  )
#Both versions ork fine, either apply for the matrix or lapply for the data-frame

###Trying it for perm.t.test without the helpful formular expression

lapply(
  M2, function(x)
  perm.t.test(subset(x, Faktor=="A"),
              subset(x, Faktor=="B")))

#For the perm.t.test lapply works with a dataframe

apply(
  M, 2, function(x)
  perm.t.test(subset(x, Faktor=="A"),
              subset(x, Faktor=="B")))


Thank you very much for your help,

Gunnar



Just a hunch I can't test from my phone, but in your final lapply you are passing a function of x that has no x in it, so I wouldn't be surprised if R was unhappy about that.

Change the latter M's to x and see if that helps.

Not likely. 'x' is a formal argument of the function. He's using lapply on a matrix. lapply is generally used for lists. but in this case it results in sending individual numbers one-by-one to that function, They are them each being t.tested against a ten item vector. Failure is the predictable outcome but he did not see fit to reproduce the informative error message that told him there was a mismatch of lengths.

He should use:
apply(M, 2, function(x)
t.test(x~ Faktor))

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to