Thx Jim. The Code works perfect when I run it in a plain way.

It gives a dataframe with 160 columns (like it should) 

 

But when I run the code in a function it gives a dataframe with 161 columns
and the order of the columns has changed into an alfabethical order. Do you
know why this occurs?

 

 

Selection = function ()

{

TestUnique <- apply(Selection,2,unique)

MaxLen <- max(sapply(TestUnique,length))

TestUnique <- lapply(TestUnique,function(x)

{

c(x,rep('0',MaxLen-length(x)))

})

Selection.Unique <<- data.frame(TestUnique)

}

 

  _____  

From: jim holtman [mailto:[EMAIL PROTECTED] 
Sent: 18 January 2007 02:28
To: Bert Jacobs
Cc: Petr Pikal; R help list
Subject: Re: [R] Fast Removing Duplicates from Every Column

 

Here is one way of doing it by 'padding' all the elements to the same
length:

 

>  x <- "Col1 Col2 Col3  Col159 Col160
+  Row1      0     0     LD  0       VD
+  Row2      HD    0     0      0       MD
+  Row3      0     HD    HD     0       LD
+  Row4      LD    HD    HD     0       0 
+  LastRow    HD    HD    LD     0       MD"
>  input <- read.table(textConnection(x), header=TRUE)
> Uniq <- apply(input, 2, unique)
> # find maximum length of an element
> maxLen <- max(sapply(Uniq, length)) 
> # pad with '0' all element to maxLen
> Uniq <- lapply(Uniq, function(x){
+     c(x, rep('0', maxLen - length(x)))
+ })
> as.data.frame(Uniq)
  Col1 Col2 Col3 Col159 Col160
1    0    0   LD      0     VD
2   HD   HD    0      0     MD
3   LD    0   HD      0     LD
4    0    0    0      0      0


 

On 1/17/07, Bert Jacobs <[EMAIL PROTECTED]> wrote: 

Hi,



Working further on this dataframe : my_data



         Col1 Col2 Col3 ... Col 159 Col 160 

Row 1      0     0     LD ... 0       VD

Row 2      HD    0     0      0       MD

Row 3      0     HD    HD     0       LD

Row 4      LD    HD    HD     0       0

...        ...

LastRow    HD    HD    LD     0       MD



Running this line of code:

Test = apply(X=my_data, MARGIN=2, FUN=unique)



I get this list:



$Col1

[1] "0" "HD" "LD" 

$Col2

[1] "0" "HD"

$Col3

[1] "LD" "0" "HD"

...

$Col159

[1] "0"

$Col160

[1] "VD" "MD" "LD" "0" 



Now I was wondering how I can get this list into a data.frame:

because a simple data.frame doesn't work (error: arguments imply differing
number of rows)



Can someone help me out on this. Thx 



So that I get the following result:

          Col1 Col2 Col3 ... Col 159 Col 160

Row 1       0   0    LD       0        VD

Row 2     HD   HD   0        0        MD

Row 3     LD   0    HD       0        LD 

Row 4      0    0    0        0        0









-----Original Message-----
From: Petr Pikal [mailto:[EMAIL PROTECTED]
Sent: 05 January 2007 11:51 
To: Bert Jacobs; 'R help list'
Subject: Re: [R] Fast Removing Duplicates from Every Column



Hi



I am not sure if I understand how do you want to select unique items.



with

sapply(DF, function(x) !duplicated(x))

you can get data frame with TRUE when an item in particular column is

unique and FALSE in opposite. However then you need to choose which

rows to keep or discard 



e.g.



DF[rowSums(sapply(comp, function(x) !duplicated(x)))>1,]



selects all rows in which are 2 or more unique values.



HTH

Petr





On 5 Jan 2007 at 9:54, Bert Jacobs wrote: 



From:             "Bert Jacobs" <[EMAIL PROTECTED]>

To:               "'R help list'" < <mailto:r-help@stat.math.ethz.ch>
r-help@stat.math.ethz.ch>

Date sent:        Fri, 5 Jan 2007 09:54:17 +0100

Subject:          Re: [R] Fast Removing Duplicates from Every Column



> Hi,

>

> I'm looking for some lines of code that does the following: 

> I have a dataframe with 160 Columns and a number of rows (max 30):

>

>          Col1 Col2 Col3 ... Col 159 Col 160

> Row 1     0     0     LD ... 0       VD

> Row 2     HD    0     0      0       MD 

> Row 3     0     HD    HD     0       LD

> Row 4     LD    HD    HD     0       0

> ...       ...

> LastRow   HD    HD    LD     0       MD

>

>

> Now I want a dataframe that looks like this. As you see all duplicates 

> are removed. Can this dataframe be constructed in a fast way?

>

>   Col1 Col2 Col3 ... Col 159 Col 160

> Row 1       0    0    LD       0      VD

> Row 2           HD   HD   0        0        MD 

> Row 3           LD   0    HD       0        LD

>

> Thx for helping me out.

> Bert

>

> ______________________________________________

> 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 and provide commented,

> minimal, self-contained, reproducible code.



Petr Pikal

[EMAIL PROTECTED]  <mailto:[EMAIL PROTECTED]> 




       [[alternative HTML version deleted]]

______________________________________________
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
and provide commented, minimal, self-contained, reproducible code. 




-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve? 


        [[alternative HTML version deleted]]

______________________________________________
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
and provide commented, minimal, self-contained, reproducible code.

Reply via email to