[R] "inahull” from package alphahull not working when used with apply
Bart Kastermans
kasterma at kasterma.net
Mon Oct 27 07:03:20 CET 2014
On 27/10/14 06:05, Camilo Mora wrote:
> Hi everyone,
>
> I have a two column (x,y) database with say 20 million rows. I want to check the points that are inside of a hull created with the package alphahull. The function that does this is call �inahull�, and it runs well when I use it for one point at a time. But when I try to optimize the function using �apply�, it gives me the wrong results. I wonder what I am doing wrong? Below is the code: I also wonder if "inahull", could be used in data.table?
>
> library (alphahull)
> DT<-data.frame(x=c(0.25,0.75,0.75,0.25),y=c(0.25,0.25,0.75,0.75))
>
> #creates hull
> HULL<-ahull(DT, alpha=0.5)
>
> #generate two points as test
> TEST<-data.frame(x=c(0.25,0.5),y=c(0.5,0.5))
> TEST<-data.matrix(TEST)
>
> #check individual points
> InPoint1<-inahull(HULL, c(TEST[1,1],TEST[1,2]))
> InPoint2<-inahull(HULL, c(TEST[2,1],TEST[2,2]))
>
>> InPoint1
> [1] FALSE
>> InPoint2
> [1] TRUE
>
> #repead check using apply
> in2D=apply(TEST, 1,function(x, y) inahull(HULL, p = TEST))
Why do x or y not appear in the function expression? Note that any
apply with a function that does not use its argument will give a
constant sequence. Now also, apply gives the whole dimension as an
argument, so once you try to use y as an argument you will get the error
(I tried just to get the error correct):
Error: argument "y" is missing, with no default
If that wasn't enough yet; let me ask another question, what is wrong
with p = TEST?
Best,
Bart
>> in2D
> [1] FALSE FALSE
>
>
>
>
>
> [[alternative HTML version deleted]]
>
>
>
> ______________________________________________
> 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