Hi,
I am trying to apply two different functions on on a vector as follow:
a<-c(NA,1,2,3,-3,-4,-6)
if a>0 I would like to raise it by the power of 2: 2^a and if the a<0 I
would like to have the inverse value, i.e., -1/2^a.
so I thought of doing it two steps:
a[a>0]<-2^[a>0]
a[a<0]<-(-1)/2^a[a<0]
I got the following error
Error: NAs are not allowed in subscripted assignments
any other ma>nupulation that I did with is.na() but did not succeed.
What is funny that the two sides of the assignment work and return the
same vector size:
> 2^a[a>0]
[1] NA  2  4  8
> a[a>0]
[1] NA  1  2  3

I found a solution in term of:
sapply(a,function(x) if (is(s.na)) NA else if (x<0) (-1)/2^x else 2^x)
but still I would like to understand why the solution above did not
work. I think is more ellegant.
my R version is:
> sessionInfo()
R version 2.2.0, 2005-10-06, i386-pc-mingw32 
 
attached base packages:
[1] "methods"   "stats"     "graphics"  "grDevices" "utils"    
"datasets" 
[7] "base" 
Thanks,
Ron
 

	[[alternative HTML version deleted]]


