Hi,
a have some code like
myfunc <- function(x) { ...; return c(a,b) }
ys <- sapply(0:100,myfunc)
so I get something like c(c(a1,b1),c(a2,b2),...)
But now I need the "as" and "bs" in one vector
as <- apply(ys, function(c(a,b)) a)
bs <- apply(ys, function(c(a,b)) b)
Can you help me with the correct syntax, instead of my pseudo code?
thx
Christof
apply on function with vector as result
3 messages · Sarah Goslee, Christof Kluß
This would be a whole lot easier if we had a reproducible example, or at least knew what your output data actually looked like, and an example of what you *wanted* it to look like. For instance, I'm confused by your description of your output data:
c(c(1,2), c(3,4))
[1] 1 2 3 4 c(c(), c()) is a single vector already. But when I try an approximation of your non-reproduclble example, that's not what I get anyway. I get the expected matrix:
myfunc <- function(x) {a=x; b=x-1; c(a, b) }
ys <- sapply(1:5, myfunc)
ys
[,1] [,2] [,3] [,4] [,5] [1,] 1 2 3 4 5 [2,] 0 1 2 3 4 And from there, it's not at all clear what you mean by "one vector" - in what order? All of the a then all of the b values? abab? as.vector(ys) and as.vector(t(ys)) will accomplish those. Or do you mean simply as <- ys[1,] bs <- ys[2,] But all this is academic since I don't know what your data look like, really. Sarah
On Fri, Dec 9, 2011 at 6:40 AM, Christof Klu? <ckluss at email.uni-kiel.de> wrote:
Hi,
a have some code like
myfunc <- function(x) { ...; ?return c(a,b) }
ys <- sapply(0:100,myfunc)
so I get something like c(c(a1,b1),c(a2,b2),...)
But now I need the "as" and "bs" in one vector
as <- apply(ys, function(c(a,b)) a)
bs <- apply(ys, function(c(a,b)) b)
Can you help me with the correct syntax, instead of my pseudo code?
thx
Christof
Sarah Goslee http://www.functionaldiversity.org
Am 09-12-2011 12:54, schrieb Sarah Goslee:
>> myfunc<- function(x) {a=x; b=x-1; c(a, b) }
>> ys<- sapply(1:5, myfunc)
>> ys
> [,1] [,2] [,3] [,4] [,5]
> [1,] 1 2 3 4 5
> [2,] 0 1 2 3 4
>
> And from there, it's not at all clear what you mean by "one vector" -
> in what order? All of the a then all of the b values? abab?
>
> as.vector(ys) and as.vector(t(ys)) will accomplish those.
>
> Or do you mean simply
> as<- ys[1,]
> bs<- ys[2,]
Thank you very much! That is what I was looking for. Sorry that I have
expressed myself so unclear.
Greetings
Christof