[R] Superscripts and rounding
Polwart Calum (County Durham and Darlington NHS Foundation Trust)
calum.polwart at nhs.net
Thu Jul 30 01:48:38 CEST 2009
>
> library(RODBC)
> library(HYDAT)
> You will need to install HYDAT (the zip file) from
> http://www.geog.ubc.ca/~rdmoore/Rcode.htm
>
> Below is my current code - which works. The [[]] is the way i am accessing
> the columns from the data frame.
>
> thanks again for all your help!!!!
>
> # load HYDAT data
> par(mfrow=c(3,1))
> path <- 'c:\\HYDAT'
> wsc.id <- '11AB075'
> stn <- ReadHydatFile(path, wsc.id) #if data in CDROM image
> # stn <- ReadHydatDatabase (path, wsc.id) #if data in database
>
I'd need access to the whole data file. I tried exporting some data from the website for it but it got too complex for me!
However, it seems to me you have two chunks of data:
stn[flow] - which has daily flow data in it?
stn[metadata] which i guess is a header for the whole dataset -describing what it is.
So I recreated what i hope might be simillar to part of your data (using lst instead of stn as the vector/array/list name)
# Build an array containing a lat & long.
info <- data.frame(latitude=1.0005689, longitude=55.698754)
#display result
info
# latitude longitude
#1 1.000569 55.69875
#create a list (called lst) with an object metadata in it containing the array
lst <- list (metadata=info)
#display result
lst
#$metadata
# latitude longitude
#1 1.000569 55.69875
#check if can call a single piece of data using the square brackets as references...
lst[['metadata']][['longitude']]
#[1] 55.69875
#now try rounding that
> round (lst[['metadata']][['longitude']], digits=2)
[1] 55.7
#now try sprintf'ing that
sprintf('Seasonal station with natural streamflow - Lat: %s', round (lst[['metadata']][['longitude']], digits=2))
# [1] "Seasonal station with natural streamflow - Lat: 55.7"
#now try that in a plot
plot(1,1, sub=sprintf('Seasonal station with natural streamflow - Lat: %s', round (lst[['metadata']][['longitude']], digits=2)))
# results in a correct label ;-)
Its possible to refer to that same value in the following ways:
> lst$metadata # same as lst[['metadata']]
latitude longitude
1 1.000569 55.69875
> lst$metadata[['longitude']] # same as lst[['metadata']][['longitude']]
[1] 55.69875
> lst$metadata$longitude # same as lst[['metadata']][['longitude']]
[1] 55.69875
>
So I'm stumped! without being able to see the actual structure of your data I can't figure out why you are getting an error!
BTW - was there a cut and paste error? Your error message was reported as:
Error: unexpected symbol in:
" sub = sprintf('Seasonal station with natural streamflow - Lat: %s Lon: %s
Gross Area %s km\UB2 - Effective Area %s km\UB2,
+ round( [['metadata"
> + round( [['metadata']][['longitude']], digits = 4),
Error: unexpected '[[' in "+ round( [["
The + on + round looks like the plus was typed. + shouldn't have been typed, but also was there a missing quote after the \UB2. You should have entered:
sub = sprintf('Seasonal station with natural streamflow - Lat: %s Lon: %s
Gross Area %s km\UB2 - Effective Area %s km\UB2 ',
round( [['metadata']][['latitude']], digits=4 ),
round( [['metadata']][['longitude']], digits = 4),
round( [['metadata']][['grossarea']], digits = 4),
round( [['metadata']][['effectivearea']], digits = 4))
C
********************************************************************************************************************
This message may contain confidential information. If yo...{{dropped:21}}
More information about the R-help
mailing list