[?]apply functions or for loop

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[?]apply functions or for loop

Ben quant
Hello,

First time posting to this mail list.

I'd like to use R in the most efficient way. I'm accomplishing what I want,
but feel there is a more R'ish way to do it. Just learning R.

*My goal: get ranks of value across rows with row names and column names
intact.*

I'm guessing one of the [?]apply functions will do what I need, but I
couldn't sort out which one (after a lot of searching).

Here is a simplified example of what I am doing. Again, I get the correct
result, but I assume there is a better way to do it.

> x = data.frame(1:4,4)
> x
  X1.4 X4
1    1  4
2    2  4
3    3  4
4    4  4
> ranks = matrix(0,nrow(x),ncol(x))
> ranks
     [,1] [,2]
[1,]    0    0
[2,]    0    0
[3,]    0    0
[4,]    0    0
> for(i in 1:nrow(x)){
+ ranks[i,] = rank(x[i,])
+ }
> ranks[i,]
[1] 1.5 1.5
> ranks
     [,1] [,2]
[1,]  1.0  2.0
[2,]  1.0  2.0
[3,]  1.0  2.0
[4,]  1.5  1.5
> rownames(ranks) = rownames(x)
> ranks
  [,1] [,2]
1  1.0  2.0
2  1.0  2.0
3  1.0  2.0
4  1.5  1.5
> rownames(ranks) = rownames(x)
> ranks
  [,1] [,2]
1  1.0  2.0
2  1.0  2.0
3  1.0  2.0
4  1.5  1.5
> colnames(ranks) = colnames(x)
> ranks
  X1.4  X4
1  1.0 2.0
2  1.0 2.0
3  1.0 2.0
4  1.5 1.5

Thanks,
Ben

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: [?]apply functions or for loop

Michael Weylandt
You should have been able to discern from the help pages that the generic
"apply" will do it.

E.g.,

apply(x,1,rank)

Now, you'll probably want to transpose the output of apply: it's a R
quirk/feature/bug/idiosyncrasy that apply(x,1,FUN) transposes the output and
most of the time I wind up switching it.

so r = t(apply(x,1,rank))

The syntax of apply is as follows: apply(THING TO APPLY, DIMENSION*,
FUNCTION, OTHERS)

THING TO APPLY -- Obvious
DIMENSION -- 1 for row-wise, 2 for column-wise
FUNCTION -- the function you are applying, here rank, without any arguments
or parentheses
OTHERS -- other arguments for more advanced functions (or to do things like
na.last=F or changing the ties.method with rank)

Hope this helps,

Michael Weylandt



On Fri, Aug 5, 2011 at 11:35 AM, Ben qant <[hidden email]> wrote:

> Hello,
>
> First time posting to this mail list.
>
> I'd like to use R in the most efficient way. I'm accomplishing what I want,
> but feel there is a more R'ish way to do it. Just learning R.
>
> *My goal: get ranks of value across rows with row names and column names
> intact.*
>
> I'm guessing one of the [?]apply functions will do what I need, but I
> couldn't sort out which one (after a lot of searching).
>
> Here is a simplified example of what I am doing. Again, I get the correct
> result, but I assume there is a better way to do it.
>
> > x = data.frame(1:4,4)
> > x
>  X1.4 X4
> 1    1  4
> 2    2  4
> 3    3  4
> 4    4  4
> > ranks = matrix(0,nrow(x),ncol(x))
> > ranks
>     [,1] [,2]
> [1,]    0    0
> [2,]    0    0
> [3,]    0    0
> [4,]    0    0
> > for(i in 1:nrow(x)){
> + ranks[i,] = rank(x[i,])
> + }
> > ranks[i,]
> [1] 1.5 1.5
> > ranks
>     [,1] [,2]
> [1,]  1.0  2.0
> [2,]  1.0  2.0
> [3,]  1.0  2.0
> [4,]  1.5  1.5
> > rownames(ranks) = rownames(x)
> > ranks
>  [,1] [,2]
> 1  1.0  2.0
> 2  1.0  2.0
> 3  1.0  2.0
> 4  1.5  1.5
> > rownames(ranks) = rownames(x)
> > ranks
>  [,1] [,2]
> 1  1.0  2.0
> 2  1.0  2.0
> 3  1.0  2.0
> 4  1.5  1.5
> > colnames(ranks) = colnames(x)
> > ranks
>  X1.4  X4
> 1  1.0 2.0
> 2  1.0 2.0
> 3  1.0 2.0
> 4  1.5 1.5
>
> Thanks,
> Ben
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] 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.
>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Obtaining parameters in LCA

David Joubert-2
In reply to this post by Ben quant

Hello,

I am using poLCA to run standard latent class analyses. Is there any way that I can get parameters for each predictors, in terms of their association with the latent variable ?

Thank you,

David Joubert
     
        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.