Thanks, Michael!

You have an heart of gold! Appreciated!


On Mon, Aug 22, 2011 at 10:53 AM, R. Michael Weylandt <
michael.weyla...@gmail.com> wrote:

> The different lengths work because R recycles values whenever you try to do
> a binary operation on things of different lengths: in essence, R copies 10
> however many times needed to make something that has the right length for an
> elementwise comparison with x.**
>
> If you did something like
>
> x != c(1,10)
>
> R would make a recycled-copy that looks like 1,10,1,10,1,10, etc. and
> compare that to x, in essence, checking half the values against 1 and half
> against 10.
>
> Similarly, you can use vectors of totally different lengths and R will
> simply repeat the shorter one to the right length:
>
> e.g.,
>
> (1:10) > (1:3)
>
> this plays out as
>
> c(1,2,3,4,5,6,7,8,9,10) > c(1,2,3,1,2,3,1,2,3)
>
> but gives you a warning message that the two vectors don't "fit" correctly.
> This message never comes up when one side is only a scalar because it can
> always fit exactly.
>
> You can see a surprising example of this at work with
>
> (-5:5) > (-2 : 7)
>
> which returns all FALSE values except for the last term, when 5 gets
> compared to a recycled -2
>
> When R makes this comparison, it creates a vector of logicals (TRUE and
> FALSE values) and then the any() command tells us if there is at least 1
> TRUE, which signals to us to keep the row.
>
> Michael
>
> ** I'm not actually sure if that's how the code is implemented for the
> scalar case, but it's probably easiest to think of it this way to get the
> intuition for larger cases.
>
> PS -- Is your data guaranteed to be an integer? If you have floating point
> data, it's good practice to use something more like
>
> abs(x - 10) > 1e-8
>
> rather than x != 0 in your code. If you need to use this formulation, just
> put it inside the any() statement.
>
> On Mon, Aug 22, 2011 at 1:43 PM, Changbin Du <changb...@gmail.com> wrote:
>
>> HI, Michael,
>>
>> Sorry for my numb, I have one more question.
>>
>> When you use function(x){any (x != 10), here x is a vector, x!=10 will
>> give a vector of logical value, right?
>>
>> If it is, how can vector be compared to a scale, 10 in this case?
>>
>> Thanks!
>>
>>
>>
>>
>>
>> On Mon, Aug 22, 2011 at 10:16 AM, R. Michael Weylandt <
>> michael.weyla...@gmail.com> wrote:
>>
>>> This isn't the most beautiful code, but I think it should work for you:
>>>
>>> # Some sample data
>>> M =
>>> cbind(matrix(rnorm(10),ncol=2),matrix(sample(c(10,1),15,replace=T),ncol=3))
>>> colnames(M) = c("Thing1","Thing2",paste("array",1:3,sep=""))
>>>
>>> colsToCheck = grepl("array",colnames(M)) # Isolate the "array" columns
>>> rowsToKeep = apply(M[,colsToCheck],1,function(x){any (x != 10)})
>>> # apply the test function row-wise to get a logical vector of which rows
>>> to keep
>>>
>>> Answer = M[rowsToKeep,] # keep only those rows
>>>
>>> Hope this helps,
>>>
>>> Michael
>>>
>>>
>>> On Mon, Aug 22, 2011 at 12:56 PM, Changbin Du <changb...@gmail.com>wrote:
>>>
>>>> HI, Michael,
>>>>
>>>> What I want to do is remove all the rows, for which array1, array2,
>>>> ..array15 are all equal to 10.
>>>>
>>>> I want to keep all the rows at least one of the array variables are not
>>>> equal to 10.
>>>>
>>>> sorry for the confusion.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Mon, Aug 22, 2011 at 9:52 AM, R. Michael Weylandt <
>>>> michael.weyla...@gmail.com> wrote:
>>>>
>>>>> "I want to select the array columns that are not equal to 10." is
>>>>> ambiguous to me.
>>>>>
>>>>> Just to clarify, do you want to simply drop the column named array10 or
>>>>> do you want to check each column for having one/all 10's as values and 
>>>>> drop
>>>>> based on that test?
>>>>>
>>>>> Michael
>>>>>
>>>>> On Mon, Aug 22, 2011 at 12:35 PM, Changbin Du <changb...@gmail.com>wrote:
>>>>>
>>>>>> Dear R community,
>>>>>>
>>>>>> I have a data set like the following:
>>>>>>
>>>>>>  probe_name chr_id  position array1 array2 array3 array4 array5 array6
>>>>>> array7
>>>>>> 1    C-3AAAA     10  16566949     10     10     10     10     10
>>>>>> 10
>>>>>> 10
>>>>>> 2    C-3AAAB     17  33478940     10     10     10     10     10
>>>>>> 10
>>>>>> 10
>>>>>> 3    C-3AAAC      3 187369224     10     10     2     10     10     1
>>>>>>     10
>>>>>> 4    C-3AAAD      8  28375041     10     10     10     10     10
>>>>>> 10
>>>>>> 10
>>>>>> 5    C-3AAAG     13  99134921     10     10     10     10     10
>>>>>> 10
>>>>>> 10
>>>>>> 6    C-3AAAH     16  31565412     10     10     10     10     10
>>>>>> 10
>>>>>> 10
>>>>>>  array8 array9 array10 array11 array12 array13 array14 array15
>>>>>> 1     10     10      10      10      10      10      10      10
>>>>>> 2     10     10      10      10      10      10      10      10
>>>>>> 3     10     10      10      10      10      10      10      10
>>>>>> 4     10     10      10      10      10      10      10      10
>>>>>> 5     10     10      10      10      10      1      10      10
>>>>>> 6     10     10      10      0      10      10      10      10
>>>>>>
>>>>>> I want to select the array columns that are not equal to 10.
>>>>>>
>>>>>> I tried the following codes:
>>>>>>
>>>>>> head(reduce.final<-final[which(final$array*!=10), ])     # it does not
>>>>>> wok,
>>>>>> do any one have a smart to do this?
>>>>>>
>>>>>> Thanks so much!
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Sincerely,
>>>>>> Changbin
>>>>>> --
>>>>>>
>>>>>>        [[alternative HTML version deleted]]
>>>>>>
>>>>>> ______________________________________________
>>>>>> R-help@r-project.org 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.
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Sincerely,
>>>> Changbin
>>>> --
>>>>
>>>>
>>>
>>
>>
>> --
>> Sincerely,
>> Changbin
>> --
>>
>>
>>
>


-- 
Sincerely,
Changbin
--

Changbin Du
Data Analysis Group, Affymetrix Inc
6550 Emeryville, CA, 94608

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org 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