[Rd] Cannot Change Function (PR#14041)

michael_karsh at earthlink.net michael_karsh at earthlink.net
Wed Nov 4 08:50:13 CET 2009


Full_Name: Michael Aaron Karsh
Version: 2.8.0
OS: Windows XP
Submission from: (NULL) (75.61.102.255)


Whenever I try changing a function, it keeps coming up with the same error
message.

I have the function
CN_state_log_sum=function(Tot_log_sum){ #estimate copy number state for the log
sum approach
	if(((Im(Tot_log_sum))!=0)|Re(Tot_log_sum)<=log(1/4)/log(2)) {return(0)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>log(1/4)/log(2))&&((Re(Tot_log_sum))<log(3/4)/log(2)))
{return(1)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>(log(3/4)/log(2)))&&((Re(Tot_log_sum))<log(5/4)/log(2)))
{return(2)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>log(5/4)/log(2))&&((Re(Tot_log_sum))<log(7/4)/log(2)))
{return(3)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>log(7/4)/log(2))) {return(4)}
}

When I try to run it in the loop:
for (j in 1:length(BB_mean_ref)){	# find copy number states (0 for homozygous
deletion, 1 for hemizygous deletion, 2 for neutral, 3 for single amplification,
4 for multiple amplification)
	state_log_sum[j]=CN_state_log_sum(Tot_log_sum[j])
	state_sum_log[j]=CN_state_sum_log(Tot_sum_log[j])
}
I get the error message:
Error in Im(Tot_sum_log) != 0 || Re(Tot_sum_log) <- 2 : 
  could not find function "||<-"

Originally, I had defined the function:
CN_state_log_sum=function(Tot_log_sum){ #estimate copy number state for the log
sum approach
	if(Im(Tot_log_sum)!=0||Re(Tot_log_sum)<-2) return(0)
	if(Im(Tot_log_sum)==0&&Re(Tot_log_sum)>-2)&&Re(Tot_log_sum)<-.4150375)
return(1)
	if(Im(Tot_log_sum)==0&&Re(Tot_log_sum)>-.4150375&&Re(Tot_log_sum)<.3219281)
return(2)
	if(Im(Tot_log_sum)==0&&Re(Tot_log_sum)>.3219281&&Re(Tot_log_sum)<.807355)
return(3)
	if(Im(Tot_log_sum)==0&&Re(Tot_log_sum)>.807355) return(4)
}
When I tried:
for (j in 1:length(BB_mean_ref)){	# find copy number states (0 for homozygous
deletion, 1 for hemizygous deletion, 2 for neutral, 3 for single amplification,
4 for multiple amplification)
	state_log_sum[j]=CN_state_log_sum(Tot_log_sum[j])
	state_sum_log[j]=CN_state_sum_log(Tot_sum_log[j])
}
I get the error message:
Error in Im(Tot_sum_log) != 0 || Re(Tot_sum_log) <- 2 : 
  could not find function "||<-"
I then tried changing the function to:
CN_state_log_sum=function(Tot_log_sum){ #estimate copy number state for the log
sum approach
	if((Im(Tot_log_sum)!=0)||(Re(Tot_log_sum)<-2)) return(0)
	if((Im(Tot_log_sum)==0)&&(Re(Tot_log_sum)>-2))&&(Re(Tot_log_sum)<-.4150375))
return(1)
	if((Im(Tot_log_sum)==0)&&(Re(Tot_log_sum)>-.4150375)&&(Re(Tot_log_sum)<.3219281))
return(2)
	if((Im(Tot_log_sum)==0)&&(Re(Tot_log_sum)>.3219281)&&(Re(Tot_log_sum)<.807355))
return(3)
	if((Im(Tot_log_sum)==0)&&(Re(Tot_log_sum)>.807355)) return(4)
}
I got the same error message.
I then remembered that <- is used to make assignments, when what I wanted to do
was compare one expression to a negative number.  I then tried changing the
function to:
CN_state_log_sum=function(Tot_log_sum){ #estimate copy number state for the log
sum approach
	if(((Im(Tot_log_sum))!=0)|Re(Tot_log_sum)<=log(1/4)/log(2)) {return(0)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>log(1/4)/log(2))&&((Re(Tot_log_sum))<log(3/4)/log(2)))
{return(1)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>(log(3/4)/log(2)))&&((Re(Tot_log_sum))<log(5/4)/log(2)))
{return(2)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>log(5/4)/log(2))&&((Re(Tot_log_sum))<log(7/4)/log(2)))
{return(3)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>log(7/4)/log(2))) {return(4)}
}
I got the same error message.

I then tried removing the function using the command:
rm(CN_state_log_sum) and then putting in the function again:
CN_state_log_sum=function(Tot_log_sum){ #estimate copy number state for the log
sum approach
	if(((Im(Tot_log_sum))!=0)|Re(Tot_log_sum)<=log(1/4)/log(2)) {return(0)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>log(1/4)/log(2))&&((Re(Tot_log_sum))<log(3/4)/log(2)))
{return(1)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>(log(3/4)/log(2)))&&((Re(Tot_log_sum))<log(5/4)/log(2)))
{return(2)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>log(5/4)/log(2))&&((Re(Tot_log_sum))<log(7/4)/log(2)))
{return(3)}
	if(((Im(Tot_log_sum))==0)&&((Re(Tot_log_sum))>log(7/4)/log(2))) {return(4)}
}
Same error message.
I tried removing the function again, and then tried saving the new workspace and
the workspace image when I closed R so that it would remember that that function
had been removed when I would open R again. I then opened R again and defined
the same function again. Again, when I tried running it, I got the same error
message.



More information about the R-devel mailing list