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.
o[["temperatureFlags"]] <- c(2,4,2,2)
Otherwise, pmatch() is used for a partial-string match with
the names of the items that are in the data slot of x.
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.