On 7/16/07, Roger Bivand <[EMAIL PROTECTED]> wrote: > On Sun, 15 Jul 2007, Tim Keitt wrote: > > > On 7/14/07, Roger Bivand <[EMAIL PROTECTED]> wrote: > >> On Sat, 14 Jul 2007, Michal Gallay wrote: > >> > >> > Dear R Users, > >> > > >> > could you please advise me on doing map algebra with spatial grids? It's > >> > the first time I am using spatial objects in R. I have imported an ascii > >> > grid file and wanted to round the values in it or sum with a value, but > >> > it > >> > gives an error message: > >> > > >> > > require(maptools) > >> > > x <- readAsciiGrid(fname="xxxx.asc") > >> > > x+3 > >> > Error in x + 3 : non-numeric argument to binary operator > >> > > round(x,2) > >> > Error in round(x, digits) : Non-numeric argument to mathematical > >> > function > >> > > >> > >> Arithmetic operations are not defined for SpatialGridDataFrame operations, > >> as the columns of the data frame (here a single column) may contain data > >> of different classes. Do the operations on the columns directly: > >> > >> names(x) > >> > >> If there is a column called "band1", then > >> > >> x$band1 + 3 > >> > >> will print "band1" + 3, and > >> > >> x$band1 <- x$band1 + 3 > >> > >> will add 3 to the "band1" column. Think what would happen if band1 was > >> categorical or logical to see why doing arithmetic directly isn't such a > >> good idea. > > > > Roger, > > > > While I agree that arithmetic directly on S?DF objects does not make a > > lot of sense, I have always taken the view that if the name of a type > > includes "data frame", then you are implicitly promising that the > > object is substitutable for any other data.frame class object in a > > function call. So if S?DF is meant to inherit (formally or informally) > > from data.frame, one should be able to use a S?DF anywhere you could > > use an ordinary data.frame object without changing the result. Of > > course, I realize that S?DF is not mean to inherit directly from > > data.frame (so it is clear from the programming standpoint, ie there > > is no "inherits" relationship between data.frame and S?DF). Perhaps it > > would be more clear to users if a different naming scheme were used? > > Tim, > > While there is something in your suggestion, my understanding of the White > Book (1992) introduction of data frames is that they are lists of vectors > of varying types but of equal lengths, and that they should play well with > formulae. The current Spatial*DataFrame do indeed do this, and you can use > them with model.frame() inside for example lm(), gstat(), and generally > almost everywhere a real data frame is needed as a data= argument. I > cannot recall ever using an arithmetic operation on a data frame myself, > although I may be an exception (I coerse to matrix). > > Rather than trying to inherit from data.frame, the methods ($,[, [[, and > assignment versions) provide data.frame operability.
Ah. OK. That satisfies my concern. I didn't pay close attention to which operators were being discussed or whether they were within the formal definition of "data frame". Sounds like the implementation is meeting its naming "obligations." THK > Certainly I can see that there are differences of approach here, > especially if remote sensing data are never going to have factors (unlike > say GIS integration, where categorical data do occur). The exchange on the > list earlier today (about why read.table() returns a data.frame and by > default converts a character vector to a factor) seems to back me up (from > my point of view, of course!). > > Best wishes, > > Roger > > > > > THK > > > >> > >> Hope this helps, > >> > >> Roger > >> > >> > Thank you for any suggestions. > >> > > >> > Best wishes, > >> > > >> > Michal > >> > > >> > > >> > > >> > > >> > >> -- > >> Roger Bivand > >> Economic Geography Section, Department of Economics, Norwegian School of > >> Economics and Business Administration, Helleveien 30, N-5045 Bergen, > >> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43 > >> e-mail: [EMAIL PROTECTED] > >> > >> _______________________________________________ > >> R-sig-Geo mailing list > >> R-sig-Geo@stat.math.ethz.ch > >> https://stat.ethz.ch/mailman/listinfo/r-sig-geo > >> > > > > > > > > -- > Roger Bivand > Economic Geography Section, Department of Economics, Norwegian School of > Economics and Business Administration, Helleveien 30, N-5045 Bergen, > Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43 > e-mail: [EMAIL PROTECTED] > -- Timothy H. Keitt, University of Texas at Austin Contact info and schedule at http://www.keittlab.org/tkeitt/ Reprints at http://www.keittlab.org/tkeitt/papers/ ODF attachment? See http://www.openoffice.org/ _______________________________________________ R-sig-Geo mailing list R-sig-Geo@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo