[R-sig-Geo] spGRASS6 issue

Roger Bivand Roger.Bivand at nhh.no
Thu Feb 7 11:48:17 CET 2013


On Thu, 7 Feb 2013, Rainer M Krug wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 06/02/13 13:22, Rainer M Krug wrote:
>> On 06/02/13 12:55, Roger Bivand wrote:
>>> On Wed, 6 Feb 2013, R.S. Bhalla wrote:
>>
>>>> Dear List, I have run into trouble with the execGRASS command copied below and can't
>>>> figure out what I'm doing wrong. It runs fine without the size=11 argument (takes the
>>>> default value of 3). Can
>>
>>>> storage.mode(11)
>>> [1] "double"
>>>> is.integer(11)
>>> [1] FALSE
>>>> is.integer(11L)
>>> [1] TRUE
>>
>>> Just because it looks like an integer, it doesn't mean it is.
>>
>> Hi Roger
>>
>> this has bittan many users, including myself, as it is a little aux contraire to R, as here 11
>> is acepted as integer in most circumstances.
>>
>> Would it be possible to use a different check for integer e.g.
>>
>> if(as.integer(x) == x) then {x <- as.integer(x)} else {ERROR}
>>
>> I have the feeling that would be more in line with the treating in R of different numerical
>> storage modes.
>
> Hi Roger,
>
> To follow up:
>
> in the function doGRASS, I would suggest to change:
>
>
>
> else if (pmv[i] == "integer") {
>                  if (!is.integer(parameters[[i]]))
>                    stop(paste("Parameter <", names(parameters)[i],
>                      "> does not have integer value", sep = ""))
>                }
>
>
> to
>
> else if (pmv[i] == "integer") {
>                  if (!(as.integer(parameters[[i]]==parameters[[i]])) {
>                    stop(paste("Parameter <", names(parameters)[i],
>                      "> does not have integer value", sep = ""))
>                  } else {
>                    parameters[[i]] <- as.integer(parameters[[i]]
>                  }
>                }
>
> which will cause the error message when a not integer *value* has been submitted, irrespective of
> the storage mode. If it is an integer value, the parameter[[i]] wil be stored as an integer.
>
> A side effect would be that even "11" would be accepted, which is actually quite nice.


I've commited some changes to the spgrass6 module of the rspatial project
on R-forge (revision 1349), but not the conversion of strings to integer
or numeric, which I think must be the users' responsibility, as failure is
not an error but an NA. Please let me know if this helps. Maybe the
statgrass list is a better forum?

Roger


>
> In addition, One could even add the same construct to the float test:
>
> else if (pmv[i] == "float") {
>                  if (!(as.numeric(parameters[[i]]==parameters[[i]])) {
>                    stop(paste("Parameter <", names(parameters)[i],
>                      "> does not have numeric value", sep = ""))
>                  } else {
>                    parameters[[i]] <- as.numeric(parameters[[i]]
>                  }
>                }
>
>
> I also would suggest to change the error message for float from "not have a float value" to "does
> not have a numeric value" as this is more consistent, as this would be more consistent with R
> terminology.
>
> Cheers,
>
> Rainer
>
>
>>
>> Cheers,
>>
>> Rainer
>>
>>
>>
>>
>>> Roger
>>
>>>> someone please help. Thanks in advance, Ravi
>>>>
>>>> Command: execGRASS("r.neighbors", parameters=list(input=patmap, output=n11map,
>>>> method="median", size=11), flags=c("overwrite", "c"))
>>>>
>>>> Error: Error in doGRASS(cmd, flags = flags, ..., parameters = parameters, echoCmd =
>>>> echoCmd) : Parameter <size> does not have integer value
>>>>
>>>>
>>
>>
>>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (GNU/Linux)
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iQEcBAEBAgAGBQJRE289AAoJENvXNx4PUvmC0kIIAIdCli9LydwiFyHCswPK8GZs
> ravj05hOEQIQs6PgKAAJuF8F/ON16IlFiZ4sgTF9vHuRNTNiJOKCb4ajqwUSOGXb
> n24k6sYFkR8v8aPZxVYtUSHB+LNaMTN1+skVvPJQwMp4+g5yguu2XIC8J1OsWX4b
> fAqPuzOASyFci4J8G0yiqdtKy2FGSHzPP3hZrKwbaTXlgjjTxDswZv9Y8lykMWT8
> tIYqX1qvFBoznFD/meiuYKFX/nv1ZwRRXNm+sa3lhDqPwjhv3zba7p603pzaLYfS
> p4XmKx5/rI70PjJtqqfgeSgSw6CQAU5wDuOUhvQEW9uAiHPUuY7ryRAyjzOBFCs=
> =rQ6u
> -----END PGP SIGNATURE-----
>

-- 
Roger Bivand
Department of Economics, NHH Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no



More information about the R-sig-Geo mailing list