[R] delete data row

David Winsemius dwinsemius at comcast.net
Sun Oct 17 05:51:51 CEST 2010


On Oct 16, 2010, at 5:45 PM, Joshua Wiley wrote:

> Jim and David,
>
> I certainly agree with your suggestions.  How would you implement
> all.equal()?  Since it compares entire objects (and the OP's goal is
> to remove any rows that equal some value), the only option I saw was
> to use *apply or a loop.  zapsmall() is easier, (though it seems
> potentially slow if the data frame is very large). A toy example with
> some attempts I made follow:
>
> x <- c(1, 2, 3, 5, 2, 3, 1)
> y <- 2
>
> # Using calling all.equal on each element of x
> x[-which(as.logical(sapply(x, all.equal, current = y)))]


> # A crude introduction of tolerance
> x[-which(x <= y + .00001 & x >= y - .00001)]

> # Using zapsmall
> x[-which(zapsmall(x) == zapsmall(y))]

I had been thinking of:
 > x <- c(1, (2^(0.5))^2 , 3, 5, (2^(0.5))^2 , 3, 1)
 > y <- 2
 > x[-which(zapsmall(x-y) == 0)]
[1] 1 3 5 3 1

--  
David
>
> Cheers,
>
> Josh
>
> On Sat, Oct 16, 2010 at 12:12 PM, David Winsemius
> <dwinsemius at comcast.net> wrote:
>>
>> IRD;
>>
>> There is a danger in applying logical tests of equality to floating  
>> point
>> numbers. It may be safer to use all.equal or zapsmall in the  
>> construction of
>> your tests.
>>
>>> all.equal( (2^(0.5))^2 , 2)
>> [1] TRUE
>>> (2^(0.5))^2 == 2
>> [1] FALSE
>>
>>
>> --
>> David.
>>
>> On Oct 16, 2010, at 1:30 PM, Joshua Wiley wrote:
>>
>>> Dear IRD,
>>>
>>> One way is to select every row except those where y = y.j and then
>>> assign that to IR.  In my example, which() returns a vector of the  
>>> row
>>> numbers where the condition evaluated TRUE, then I used `-` to  
>>> select
>>> not those rows.
>>>
>>> IR <- IR[-which(IR$y == y.j), ]
>>>
>>> HTH,
>>>
>>> Josh
>>>
>>> On Sat, Oct 16, 2010 at 5:02 AM, IRD <ird_ubru at hotmail.com> wrote:
>>>>
>>>>  Dear All
>>>> I have data like this:
>>>>>
>>>>> IR
>>>>
>>>>     x        y
>>>> [1,] 5 2.865490
>>>> [2,] 3 1.454611
>>>> [3,] 3 2.258772
>>>> [4,] 6 1.476128
>>>> [5,] 4 2.771606
>>>>>
>>>>> y.j
>>>>
>>>>      y
>>>> 2.865490
>>>>>
>>>> and I want to delete data row in IR where y = y.j
>>>> How I can do.
>>>> IRD
>>>>
>>>> ______________________________________________
>>>> R-help at 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.
>>>>
>>>
>>>
>>>
>>> --
>>> Joshua Wiley
>>> Ph.D. Student, Health Psychology
>>> University of California, Los Angeles
>>> http://www.joshuawiley.com/
>>>
>>> ______________________________________________
>>> R-help at 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.
>>
>>
>
>
>
> -- 
> Joshua Wiley
> Ph.D. Student, Health Psychology
> University of California, Los Angeles
> http://www.joshuawiley.com/
>
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list