[R] error using lapply with oneway_test (coin package)

2009-05-07 Thread Matthieu Dubois
Dear expeRts,

I would like to use a oneway_test (from package coin) to test whether  
two groups differ on various variables. The variables are encoded  
within a data frame. Unfortunately, I obtained an error, that I don't  
understand. Could you please help me ?

Example:
library(coin)
y - as.data.frame(matrix(rnorm(200), ncol=2))
group - as.factor(unif(100))

lapply(y, function(var) oneway_test(var ~ group))

Error message is:
(in French, my locale) Erreur dans eval(expr, envir, enclos) : objet  
'var' introuvable
(my personal translation in English) Error in eval(expr, envir,  
enclos) : object 'var' not found

Thank you,

Matthieu

Matthieu Dubois
Post-doctoral fellow

Psychology and NeuroCognition Lab (CNRS UMR 5105)
Université Pierre Mendès-France
BP47 --- 38040 Grenoble Cedex 9 --- France

Email: matthieu.dub...@upmf-grenoble.fr
Gmail: matth...@gmail.com
http://web.upmf-grenoble.fr/LPNC/membre_matthieu_dubois





[[alternative HTML version deleted]]

__
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.


Re: [R] error using lapply with oneway_test (coin package)

2009-05-07 Thread Duncan Murdoch

On 07/05/2009 6:11 AM, Matthieu Dubois wrote:

Dear expeRts,

I would like to use a oneway_test (from package coin) to test whether  
two groups differ on various variables. The variables are encoded  
within a data frame. Unfortunately, I obtained an error, that I don't  
understand. Could you please help me ?


Example:
library(coin)
y - as.data.frame(matrix(rnorm(200), ncol=2))
group - as.factor(unif(100))

lapply(y, function(var) oneway_test(var ~ group))

Error message is:
(in French, my locale) Erreur dans eval(expr, envir, enclos) : objet  
'var' introuvable
(my personal translation in English) Error in eval(expr, envir,  
enclos) : object 'var' not found


That's a scoping problem, I think a bug in oneway_test.  Because the 
formula var ~ group is created with the anonymous function within 
lapply, its environment should be the evaluation frame of that function 
call and var should be visible.  If I replace oneway_test() with lm() it 
works.


I think a workaround is to construct the data argument explicitly, i.e.

lapply(y, function(var) oneway_test(var ~ group, data.frame(var=var, 
group=group)))


I've cc'd Torsten Hothorn, the maintainer of coin.

Duncan Murdoch



Thank you,

Matthieu

Matthieu Dubois
Post-doctoral fellow

Psychology and NeuroCognition Lab (CNRS UMR 5105)
Université Pierre Mendès-France
BP47 --- 38040 Grenoble Cedex 9 --- France

Email: matthieu.dub...@upmf-grenoble.fr
Gmail: matth...@gmail.com
http://web.upmf-grenoble.fr/LPNC/membre_matthieu_dubois





[[alternative HTML version deleted]]





__
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.


__
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.


Re: [R] error using lapply with oneway_test (coin package)

2009-05-07 Thread Torsten Hothorn


That's a scoping problem, I think a bug in oneway_test.  Because the formula 
var ~ group is created with the anonymous function within lapply, its 
environment should be the evaluation frame of that function call and var 
should be visible.  If I replace oneway_test() with lm() it works.


I think a workaround is to construct the data argument explicitly, i.e.

lapply(y, function(var) oneway_test(var ~ group, data.frame(var=var, 
group=group)))




yes, that would be the fix:

R lapply(y, function(var) oneway_test(var ~ group,
  data = data.frame(var = var, group = group)))
$V1

Asymptotic 2-Sample Permutation Test

data:  var by group (1, 2)
Z = -1.2054, p-value = 0.2280
alternative hypothesis: true mu is not equal to 0


$V2

Asymptotic 2-Sample Permutation Test

data:  var by group (1, 2)
Z = 0.5672, p-value = 0.5706
alternative hypothesis: true mu is not equal to 0

Thanks, Duncan.

Torsten



I've cc'd Torsten Hothorn, the maintainer of coin.

Duncan Murdoch



Thank you,

Matthieu

Matthieu Dubois
Post-doctoral fellow

Psychology and NeuroCognition Lab (CNRS UMR 5105)
Université Pierre Mendès-France
BP47 --- 38040 Grenoble Cedex 9 --- France

Email: matthieu.dub...@upmf-grenoble.fr
Gmail: matth...@gmail.com
http://web.upmf-grenoble.fr/LPNC/membre_matthieu_dubois





[[alternative HTML version deleted]]





__
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.


__
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.


Re: [R] Error with lapply [addirional clarification needed]

2008-11-22 Thread megh

I need one more clarification here :

Here I did :

fn - function(i) return(list(i, i^2))
ss = sapply(1:4, fn)

Here the object ss should be a matrix object :
is.matrix(ss)

However I feel it lacks some the matrix object properties. For example the
syntax min(ss[1,]) generates an error :
Error in min(ss[1, ]) : invalid 'type' (list) of argument.

What should be the way out? Am I missing something ?

Regards,


baptiste auguie-2 wrote:
 
 Hi,
 
 you are feeding lapply i as an optional argument, which is passed to  
 fn() and causes an error. Just use lapply(1:4, fn), or better yet,  
 sapply,
 
   fn - function(i) return(i^2)
   sapply(1:4, fn)
 [1]  1  4  9 16
 
 Hope this helps,
 
 baptiste
 
 
 On 20 Nov 2008, at 16:31, megh wrote:
 

 I have written following codes, with intention to get a list with  
 values
 1,2,9,16 :

 fn - function(i) return(i^2)
 lapply(1:4, fn, i)

 However I got following error :
 Error in FUN(1:4[[1L]], ...) : unused argument(s) (1)

 Can anyone please tell me what will be the correct code here?

 Regards,


 --
 View this message in context:
 http://www.nabble.com/Error-with-lapply-tp20605066p20605066.html
 Sent from the R help mailing list archive at Nabble.com.

 __
 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.
 
 _
 
 Baptiste Auguié
 
 School of Physics
 University of Exeter
 Stocker Road,
 Exeter, Devon,
 EX4 4QL, UK
 
 Phone: +44 1392 264187
 
 http://newton.ex.ac.uk/research/emag
 
 __
 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.
 
 

-- 
View this message in context: 
http://www.nabble.com/Error-with-lapply-tp20605066p20634821.html
Sent from the R help mailing list archive at Nabble.com.

__
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.


Re: [R] Error with lapply [addirional clarification needed]

2008-11-22 Thread Peter Dalgaard

megh wrote:

I need one more clarification here :

Here I did :

fn - function(i) return(list(i, i^2))
ss = sapply(1:4, fn)

Here the object ss should be a matrix object :
is.matrix(ss)

However I feel it lacks some the matrix object properties. For example the
syntax min(ss[1,]) generates an error :
Error in min(ss[1, ]) : invalid 'type' (list) of argument.

What should be the way out? Am I missing something ?


ss is a dim'ed list object, because fn returns a list. This appears to 
be a feature, although rarely used. One point is that you can do


 fn - function(i) return(list(as.character(i), i^2))
 ss - sapply(1:4, fn)
 ss
 [,1] [,2] [,3] [,4]
[1,] 1  2  3  4
[2,] 14916
 ss[,1]
[[1]]
[1] 1

[[2]]
[1] 1

I.e., the rows can be of different mode.

The easiest way out is just not to do that, i.e. return a vectore c(i, 
i^2) instead.



--
   O__   Peter Dalgaard Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark  Ph:  (+45) 35327918
~~ - ([EMAIL PROTECTED])  FAX: (+45) 35327907

__
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.


Re: [R] Error with lapply [addirional clarification needed]

2008-11-22 Thread Gabor Grothendieck
Try str(ss) to see what it really looks like.  You probably want:

fn - function(i) c(i, i^2)


On Sat, Nov 22, 2008 at 4:54 AM, megh [EMAIL PROTECTED] wrote:

 I need one more clarification here :

 Here I did :

 fn - function(i) return(list(i, i^2))
 ss = sapply(1:4, fn)

 Here the object ss should be a matrix object :
 is.matrix(ss)

 However I feel it lacks some the matrix object properties. For example the
 syntax min(ss[1,]) generates an error :
 Error in min(ss[1, ]) : invalid 'type' (list) of argument.

 What should be the way out? Am I missing something ?

 Regards,


 baptiste auguie-2 wrote:

 Hi,

 you are feeding lapply i as an optional argument, which is passed to
 fn() and causes an error. Just use lapply(1:4, fn), or better yet,
 sapply,

   fn - function(i) return(i^2)
   sapply(1:4, fn)
 [1]  1  4  9 16

 Hope this helps,

 baptiste


 On 20 Nov 2008, at 16:31, megh wrote:


 I have written following codes, with intention to get a list with
 values
 1,2,9,16 :

 fn - function(i) return(i^2)
 lapply(1:4, fn, i)

 However I got following error :
 Error in FUN(1:4[[1L]], ...) : unused argument(s) (1)

 Can anyone please tell me what will be the correct code here?

 Regards,


 --
 View this message in context:
 http://www.nabble.com/Error-with-lapply-tp20605066p20605066.html
 Sent from the R help mailing list archive at Nabble.com.

 __
 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.

 _

 Baptiste Auguié

 School of Physics
 University of Exeter
 Stocker Road,
 Exeter, Devon,
 EX4 4QL, UK

 Phone: +44 1392 264187

 http://newton.ex.ac.uk/research/emag

 __
 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.



 --
 View this message in context: 
 http://www.nabble.com/Error-with-lapply-tp20605066p20634821.html
 Sent from the R help mailing list archive at Nabble.com.

 __
 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.


__
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.


[R] Error with lapply

2008-11-20 Thread megh

I have written following codes, with intention to get a list with values
1,2,9,16 :

fn - function(i) return(i^2)
lapply(1:4, fn, i)

However I got following error :
Error in FUN(1:4[[1L]], ...) : unused argument(s) (1)

Can anyone please tell me what will be the correct code here?

Regards,


-- 
View this message in context: 
http://www.nabble.com/Error-with-lapply-tp20605066p20605066.html
Sent from the R help mailing list archive at Nabble.com.

__
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.


Re: [R] Error with lapply

2008-11-20 Thread baptiste auguie

Hi,

you are feeding lapply i as an optional argument, which is passed to  
fn() and causes an error. Just use lapply(1:4, fn), or better yet,  
sapply,


 fn - function(i) return(i^2)
 sapply(1:4, fn)
[1]  1  4  9 16

Hope this helps,

baptiste


On 20 Nov 2008, at 16:31, megh wrote:



I have written following codes, with intention to get a list with  
values

1,2,9,16 :

fn - function(i) return(i^2)
lapply(1:4, fn, i)

However I got following error :
Error in FUN(1:4[[1L]], ...) : unused argument(s) (1)

Can anyone please tell me what will be the correct code here?

Regards,


--
View this message in context: 
http://www.nabble.com/Error-with-lapply-tp20605066p20605066.html
Sent from the R help mailing list archive at Nabble.com.

__
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.


_

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag

__
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.


Re: [R] Error with lapply

2008-11-20 Thread Marc Schwartz
on 11/20/2008 10:31 AM megh wrote:
 I have written following codes, with intention to get a list with values
 1,2,9,16 :
 
 fn - function(i) return(i^2)
 lapply(1:4, fn, i)
 
 However I got following error :
 Error in FUN(1:4[[1L]], ...) : unused argument(s) (1)
 
 Can anyone please tell me what will be the correct code here?
 
 Regards,

Try this:

fn - function(i) i^2

 lapply(1:4, fn)
[[1]]
[1] 1

[[2]]
[1] 4

[[3]]
[1] 9

[[4]]
[1] 16


The error message indicates that the argument 'i' that you have in your
initial attempt to use lappply() is unused, because the values 1:4 are
passed to the function's first argument by default already. Thus,
specifying 'i' again is an error, since there is not a second argument
in your function fn().

Note also that 'return()' is not needed, as per the Details in ?return:

If the end of a function is reached without calling return, the value
of the last evaluated expression is returned.


Note also, that since lapply() effectively uses an internal loop, a
faster vectorized approach would be:

 as.list((1:4) ^ 2)
[[1]]
[1] 1

[[2]]
[1] 4

[[3]]
[1] 9

[[4]]
[1] 16


For example, using 100,000 instead of 4:

 system.time(x1 - lapply(1:10, fn))
   user  system elapsed
  0.500   0.015   0.600

 system.time(x2 - as.list((1:10) ^ 2))
   user  system elapsed
  0.018   0.004   0.039

 identical(x1, x2)
[1] TRUE


HTH,

Marc Schwartz

__
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.


Re: [R] Error with lapply

2008-11-20 Thread Gabor Grothendieck
lapply already passes the first arg to fn and by specifying the
i (which is undefined -- its only defined within fn) it would be
trying to to pass a second arg to fn yet fn takes only takes
one arg.   Try these:

lapply(1:4, fn)
lapply(1:4, ^, 2)


On Thu, Nov 20, 2008 at 11:31 AM, megh [EMAIL PROTECTED] wrote:

 I have written following codes, with intention to get a list with values
 1,2,9,16 :

 fn - function(i) return(i^2)
 lapply(1:4, fn, i)

 However I got following error :
 Error in FUN(1:4[[1L]], ...) : unused argument(s) (1)

 Can anyone please tell me what will be the correct code here?

 Regards,


 --
 View this message in context: 
 http://www.nabble.com/Error-with-lapply-tp20605066p20605066.html
 Sent from the R help mailing list archive at Nabble.com.

 __
 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.


__
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.


Re: [R] Error with lapply

2008-11-20 Thread Bert Gunter
 
To be clear, the problem is not the return statement in your function, but
the extra argument, i, in your lapply statement:

lapply(1:4,fn)

works just fine with your original function. You need to read ?lapply more
carefully: fn receives the values of the first argument (1:4) in turn
automatically; other arguments in lapply are passed in as **additional**
arguments to fn, of which there are none here.
Compare:

fn - function(i,a)i^2+a
lapply(1:4,fn) ## error
lapply(1:4,fn,5)

Cheers,
Bert

Bert Gunter
Genentech


-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Marc Schwartz
Sent: Thursday, November 20, 2008 8:50 AM
To: megh
Cc: r-help@r-project.org
Subject: Re: [R] Error with lapply

on 11/20/2008 10:31 AM megh wrote:
 I have written following codes, with intention to get a list with values
 1,2,9,16 :
 
 fn - function(i) return(i^2)
 lapply(1:4, fn, i)
 
 However I got following error :
 Error in FUN(1:4[[1L]], ...) : unused argument(s) (1)
 
 Can anyone please tell me what will be the correct code here?
 
 Regards,

Try this:

fn - function(i) i^2

 lapply(1:4, fn)
[[1]]
[1] 1

[[2]]
[1] 4

[[3]]
[1] 9

[[4]]
[1] 16


The error message indicates that the argument 'i' that you have in your
initial attempt to use lappply() is unused, because the values 1:4 are
passed to the function's first argument by default already. Thus,
specifying 'i' again is an error, since there is not a second argument
in your function fn().

Note also that 'return()' is not needed, as per the Details in ?return:

If the end of a function is reached without calling return, the value
of the last evaluated expression is returned.


Note also, that since lapply() effectively uses an internal loop, a
faster vectorized approach would be:

 as.list((1:4) ^ 2)
[[1]]
[1] 1

[[2]]
[1] 4

[[3]]
[1] 9

[[4]]
[1] 16


For example, using 100,000 instead of 4:

 system.time(x1 - lapply(1:10, fn))
   user  system elapsed
  0.500   0.015   0.600

 system.time(x2 - as.list((1:10) ^ 2))
   user  system elapsed
  0.018   0.004   0.039

 identical(x1, x2)
[1] TRUE


HTH,

Marc Schwartz

__
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.

__
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.


[R] error in lapply

2008-11-02 Thread Chibisi Chima-Okereke
Dear all,

I am getting a error while using lapply to generate plots. The variable
.name is used to identify each plot in the main variable. The method
worked once but afterwards seems to throw up an error when used in a
different case. The input ...

dataOut - lapply(names(dataIn), FUN =
function(.name){anotherplotFun(dataIn[[.name]], numb = .name)} )

Throws up the error ...

Error in testFun(corrData[[.name]], numb = .name) :
  promise already under evaluation: recursive default argument reference or
earlier problems?


Thanks

Chibisi

[[alternative HTML version deleted]]

__
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.


[R] error in lapply (sorry error in last e-mail)

2008-11-02 Thread Chibisi Chima-Okereke
Dear all,

I am getting a error while using lapply to generate plots. The variable
.name is used to identify each plot in the main variable. The method
worked once but afterwards seems to throw up an error when used in a
different case. The input ...

dataOut - lapply(names(dataIn), FUN = function(.name){
anotherplotFun(dataIn[[.name]], numb = .name)} )

Throws up the error ...

Error in anotherplotFun(dataIn[[.name]], numb = .name) :
  promise already under evaluation: recursive default argument reference or
earlier problems?


Thanks

Chibisi

[[alternative HTML version deleted]]

__
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.