[R] Problem in 'Apply' function: does anybody have other solution

David Winsemius dwinsemius at comcast.net
Thu Jun 18 17:21:49 CEST 2009


It's not a solution. Unfortunately data.matrix is no different with  
respect to factors than other functions. Note what str(df) produced  
for df$y.

-- 
David.

On Jun 18, 2009, at 10:59 AM, <jude.ryan at ubs.com> <jude.ryan at ubs.com>  
wrote:

> David Winsemius' solution:
>
> > apply(data.matrix(df), 1, I)
>    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
> x    1    2    3    4    5    6    7    8    9    10
> y    1    3    4    5    6    7    8    9   10     2
>
> For y and [,2] above the value is 3. Why is the value not 2?
> It looks like the value is 2 for y and [,10] (this should be 10,  
> right?)
> and values 3 to 10 are shifted one position to the left for "y".
>
> I got the same results when I ran this code.
>
> Thanks,
>
> Jude
>
> David Winsemius wrote:
>
> On Jun 17, 2009, at 9:27 AM, jim holtman wrote:
>
> > Do an 'str' of your object.  It looks like one of the columns is
> > probably
> > character/factor since there are quotes around the 'numbers'.  You
> > can also
> > explicity convert the offending columns to numeric is you want to.
> > Also use
> > colClasses on the read.csv to define the class of the data in each
> > column.
> > This will should you where the error is.
>
> One function that might be of use is data.matrix which will attempt to
> convert character vectors to numeric vectors across an entire
> dataframe. I hope this is not beating a dead horse, but see if these
> examples are helpful in any way:
>
>  > ?data.matrix
>  > df <- data.frame(x=1:10,y=as.character(1:10))
>  > df
>      x  y
> 1   1  1
> 2   2  2
> 3   3  3
> 4   4  4
> 5   5  5
> 6   6  6
> 7   7  7
> 8   8  8
> 9   9  9
> 10 10 10    # .... not all is as it seems
>  > apply(df,1,I)
>    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
> x " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10"
> y "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"
>  > df2 <- data.frame(x=1:10,y=1:10)
>  > apply(df2,1,I)
>    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
> x    1    2    3    4    5    6    7    8    9    10
> y    1    2    3    4    5    6    7    8    9    10
>  > str(df)
> 'data.frame':     10 obs. of  2 variables:
>   $ x: int  1 2 3 4 5 6 7 8 9 10
>   $ y: Factor w/ 10 levels "1","10","2","3",..: 1 3 4 5 6 7 8 9 10 2
>
> # so that's weird. y isn't even a character vector !?!? Such are the
> strange beasts called factors.
>
> # solution? or at least one strategy
>
>  > apply(data.matrix(df), 1, I)
>    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
> x    1    2    3    4    5    6    7    8    9    10
> y    1    3    4    5    6    7    8    9   10     2
>
>
>
>
> ___________________________________________
> Jude Ryan
> Director, Client Analytical Services
> Strategy & Business Development
> UBS Financial Services Inc.
> 1200 Harbor Boulevard, 4th Floor
> Weehawken, NJ 07086-6791
> Tel. 201-352-1935
> Fax 201-272-2914
> Email: jude.ryan at ubs.com
>
> Please do not transmit orders or instructions regarding a UBS
> account electronically, including but not limited to e-mail,
> fax, text or instant messaging. The information provided in
> this e-mail or any attachments is not an official transaction
> confirmation or account statement. For your protection, do not
> include account numbers, Social Security numbers, credit card
> numbers, passwords or other non-public information in your e-mail.
> Because the information contained in this message may be privileged,
> confidential, proprietary or otherwise protected from disclosure,
> please notify us immediately by replying to this message and
> deleting it from your computer if you have received this
> communication in error. Thank you.
>
> UBS Financial Services Inc.
> UBS International Inc.
> UBS Financial Services Incorporated of Puerto Rico
> UBS AG
>
>
> UBS reserves the right to retain all messages. Messages are protected
> and accessed only in legally justified cases.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list