From: Ted Harding <Ted.Harding_at_nessie.mcc.ac.uk>

Date: Tue 05 Apr 2005 - 23:29:22 EST

(cubic.distance(x.df$tb19h,x.df$tb37v,x.df$tb19v,190,210,227)<=2)**#[1] FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE
**
subset(x.df,cubic.distance(tb19h,tb37v,tb19v,190,210,227)<=2)

E-Mail: (Ted Harding) <Ted.Harding@nessie.mcc.ac.uk> Fax-to-email: +44 (0)870 094 0861

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Tue Apr 05 23:41:03 2005

Date: Tue 05 Apr 2005 - 23:29:22 EST

On 05-Apr-05 Wladimir Eremeev wrote:

> Dear r-help,

*>
**> I have the following function defined:
**>
**> cubic.distance<-function(x1,y1,z1,x2,y2,z2) {
**> max(c(abs(x1-x2),abs(y1-y2),abs(z1-z2)))
**> }
**>
**> I have a data frame from which I make subsets.
**>
**> When I call
**> subset(dataframe,cubic.distance(tb19h,tb37v,tb19v,190,210,227)<=2)
**> I have the result with 0 rows.
**>
**> However, the data frame contains the row (among others, that suit)
**> tb19v tb19h tb37v
**> 226.6 189.3 208.4
*

Did you test the function cubic.distance? As written, I think it will always return a single value, since max() returns the maximum of *all* the values, not by rows (even if you use cbind() rather than c()).

If yor redefine the function as

cubic.distance<-function(x1,y1,z1,x2,y2,z2) { apply(cbind(abs(x1-x2),abs(y1-y2),abs(z1-z2)),1,max) }

I think you will find it does what you want (if I have understood your problem correctly).

Example (with the function defined as above):

x<-cbind(rnorm(10,190,1),rnorm(10,210,1),rnorm(10,227,1)) x<-cbind(rnorm(10,190,2),rnorm(10,210,2),rnorm(10,227,2)) colnames(x)<-c("tb19h","tb37v","tb19v")x.df<-as.data.frame(x)

(cubic.distance(x.df$tb19h,x.df$tb37v,x.df$tb19v,190,210,227)<=2)

# tb19h tb37v tb19v #3 189.3930 211.4345 226.3436 #4 189.4521 208.8493 228.0324 #9 188.2441 210.4914 226.4521 #10 191.4781 211.5234 226.1837

With your definition, you would have got the *single" result FALSE, since there is at least one case where the distance > 2, so the max > 2, so the subset criterion evaluates to FALSE, so no rows are selected.

Hoping this helps,

Ted.

E-Mail: (Ted Harding) <Ted.Harding@nessie.mcc.ac.uk> Fax-to-email: +44 (0)870 094 0861

Date: 05-Apr-05 Time: 14:29:22 ------------------------------ XFMail ------------------------------ ______________________________________________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 Received on Tue Apr 05 23:41:03 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:31:01 EST
*