[Rd] Cannot Change Function (PR#14041)

From: <michael_karsh_at_earthlink.net>
Date: Wed, 04 Nov 2009 08:50:13 +0100 (CET)


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.

R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 04 Nov 2009 - 10:20:14 GMT

This archive was generated by hypermail 2.2.0 : Wed 04 Nov 2009 - 21:30:19 GMT