As with [[ method, the procedure
works in steps.
First, the metadata slot of x is checked to
see whether it contains something named with i.
If so, then the named item is replaced with value.
Otherwise, if the string value of i ends in Unit, then the
characters preceding that are taken as the name of a variable, and
the metadata slot of x is updated to store that unit, e.g.
x[["temperatureUnits"]] <- list(unit=expression(degree*F),scale="")
Similarly, if i ends in Flag, then quality-control
flags are set up as defined by result, e.g.
x[["temperatureFlags"]] <- c(2,4,2,2)
Otherwise, a partial string match is sought among the names of items
in the data slot of x. (This is done with pmatch.)
The first item found (if any) is then updated to hold the value result.
If none of these conditions is met, a warning is issued.