From: Gabor Grothendieck <ggrothendieck_at_gmail.com>

Date: Mon 06 Jun 2005 - 05:38:34 EST

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Mon Jun 06 05:44:50 2005

Date: Mon 06 Jun 2005 - 05:38:34 EST

On 6/5/05, jose silva <chess.player@oninet.pt> wrote:

> Dear all

*>
**>
**>
**>
**>
**>
**>
**>
**>
**> I think my problem is not complicated but I'm having difficulties to solve it.
**> v is a vector: v=c(p1 , p2 , p3 , p4), and f is a function: f : v -> w , where
**> w=c(p1 , p2*(1-p1) , p3*(1-p2)*(1-p1) , p4*(1-p3)*(1-p2)*(1-p1))
**>
**> I write the function f as:
**> f<- function(w,x,y,z) {c(w,x*(1-w),y*(1-x)*(1-w),z*(1-y)*(1-x)*(1-w))}
**> f(a,b,c,d) it works well.
*

> But now I want to apply f to each row of a data frame with 4 columns:

*> d<-data.frame(a=seq(1,10), b=seq(11,20), c=seq(21,30),d=seq(31,40))
**> t(apply(d,1,f)) is not working?
**> I think each element of each row is not corresponding to w,x,y,z and now I'm lost?
**> Can someone help me?
*

apply passes each of row of d to f as a single vector, not 4 individual elements, so in terms of your f define fv which is like f but takes a vector argument:

fv <- function(x) f(x[1], x[2], x[3], x[4]) apply(d,1,fv) # or maybe you want t(apply(d,1,fv))

# In fact, since your f works with vectors as arguments this would do: as.data.frame(fv(d))

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Mon Jun 06 05:44:50 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:32:22 EST
*