Sorry for not being more clear.

I'll try to explain again.

I have a rather large DEM and I need to scale daily temperature values for
10 years.

I am using the sapply function to adjust temperatures (t.mean.1.c) based on
lapse rates across DEM points (cdem) which meet the condition of elevation
being greater than 300m. Below ~300m the lapse rate calculate changes
because temperatures decrease with elevation. Above ~300m the lapse rates
calculation must account for an inversion, where temperature increases with
elevation.

What I would like as a result is the values of the DEM which are lower than
300m to retain a generic lapse rate adjustment, and the DEM values great
than 300 to be treating using a different function.


t.mean.1.c <- c(-15, -20, -30, -20, -25, -35, -40, -8, 9, 10)
cdem <- c(300, 400, 700, 900, 1000, 250, 200, 300, 500, 650, 650, 1200,
1400, 3200, 2000)
cdem.mat <- sapply(cdem[which(cdem >= 900)], function(x) get("t.mean.1.c")
- (x * -0.0065)) #this just gives me a
#result of only the six values

I'm going to make this even more simple to show what I want as output.

t.mean.1.c <- c(-14, -20)
cdem <- c(300, 400, 700, 900)
cdem.mat.1 <- sapply(cdem[which(cdem >= 900)], function(x)
get("t.mean.1.c") - (x * -0.0065))
cdem.mat.2 <- sapply(cdem[which(cdem < 900)], function(x) get("t.mean.1.c")
+ (x * -0.0065))

cdem.mat.1 #right now I get this, which is only the two temperature scaled
to the 900 m elevation case
#       [,1]
#[1,]  -8.15
#[2,] -14.15

#What I want:

#       [,1]        [,2]   [,3]         [,4]
#[1,] -15.95  -16.6    -18.55     -8.15
#[2,] -21.95   -22.6   -24.55     -14.15

Maybe I can combine in the sapply function an if else statement? I haven't
tested the below try.

sapply( if (cdem < 900)] function(x) get("t.mean.1.c") - (x * -0.0065)
else function(x) get("t.mean.1.c") + (x * -0.0065) )

Finally, I want to output everything into one single matrix array.

I hope that is more clear.

Thanks for your assistance.

Katrina






On Sun, Nov 27, 2011 at 7:35 PM, David Winsemius <dwinsemius@comcast.net>wrote:

>
> On Nov 27, 2011, at 10:15 PM, Katrina Bennett wrote:
>
>  Hi all,
>>
>> I'm working to apply a function that will generate a matrix of results
>> only
>> when a specific criteria is met.
>>
>> I want my final results to be a matrix with both the values that meet the
>> criteria (the results of the function), and those that to do in the same
>> positions in the matrix (the original numbers).
>>
>> Here's a sample of what I would like to do:
>>
>> t.mean.1.c <- c(-15, -20, -30, -20, -25, -35, -40, -8, 9, 10)
>> cdem <- c(300, 400, 700, 900, 1000, 250, 200, 300, 500, 650, 650, 1200,
>> 1400, 3200, 2000)
>> cdem.mat <- matrix(NA, 10, 15)
>> cdem.mat <- cdem.mat(sapply(cdem[which(**cdem >= 900)], function(x)
>>
> ......................^
> cdem.mat is not a function, cannot use "(".
>
>
>
>  get("t.mean.1.c") - (x * -0.0065)))
>>
>> I want cdem.mat to be the same size as the the first call of it, with NA
>> values where the cdem is < 899.
>>
>
> You are only offering 10 values as replacements and an unequal number of
> condition regardless of whether you count the qualifying cdem conditions
> (6) or the total conditions(15). So you will need to be more clear about
> how you want the conditions to apply to values. They stepping the audience
> through the first few decisions and say where you want the values placed.
> Maybe you should also say whether you expect values to be recycled (the
> default with matrix assignment).
>
> I suppose it is possible that you want the results of this:
>
> cdem.mat[cdem>899] <-  t.mean.1.c - (cdem * -0.0065)
>
> .... but I'm guessing not.
>
>  I thought this would fill it in but it
>> seems to just over write it and I only end up with the rows where cdem is
>> greater than 900.
>>
>> Thank you,
>>
>> Katrina
>>
>>
>>
>> --
>> Katrina E. Bennett
>> PhD Student
>> University of Alaska Fairbanks
>> International Arctic Research Center
>> 930 Koyukuk Drive, PO Box 757340
>> Fairbanks, Alaska 99775-7340
>> 907-474-1939 office
>> 907-385-7657 cell
>> kebennett@alaska.edu
>>
>>
>> Personal Address:
>> UAF, PO Box 752525
>> Fairbanks, Alaska 99775-2525
>> bennett.katrina@gmail.com
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________**________________
>> R-help@r-project.org mailing list
>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
>> PLEASE do read the posting guide http://www.R-project.org/**
>> posting-guide.html <http://www.R-project.org/posting-guide.html>
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> David Winsemius, MD
> West Hartford, CT
>
>

	[[alternative HTML version deleted]]

