Dear All, I am new to R and am trying to learn how to create functions using R. Below is code which calculates Lin's Concordance Coefficient. After I calculate the coefficient I want to create a scatter plot which annotates the coefficient along with preceding text onto the plot. The below code doesn't seem to work. If I use only the object 'lincc' on the text command it works (but doesn't give me the preceding text) or if I use only "Lin's Concordance Coefficient = " on the text command it works (but doesn't place on the plot the value for the object 'lincc'). Similarly, I have tried using: linc=cat("Lin's Concordance Coefficient = ",lincc) within the function and then specifying: text(20,60,(linc) Also, the objects I create inside a "user defined function" are internal to the function. Is there anyway/command that can make them external, i.e., make them exists to perform tasks on outside the user defined function. Can anyone offer some advise as to what I am doing wrong? Thanks, Craig Ziegler ************************************************************** # o1 is the x vector # o2 is the y vector # I am trying to correlate these vectors to get # Lin's Concordance Coeffient. These are just # test vectors o1=c(11,9,54,55,50,44,58,5,21,58,41,59,39,34,23) o2=c(27,15,72,63,65,49,51,8,30,43,40,62,52,49,21) #title is a specification for the plot title; see 'main = title' in the #plot function #hlab is the x axis label; see "xlab = hlab" in the plot function #vlab is the y axis label; see "ylab = vlab" in the plot function title="This is a test plot" vlab="Label for verticle axis" hlab="Label for horizontal axis" # Start of the function I call lin lin = function (x,y) { lincc (2 * cov(x,y)) / (var(x) + (var(y)) + ((mean(x) - mean(y))^2)) print(lincc) agree plot(x,y,xlim=c(0,70),ylim=c(0,70), main = title, xlab = hlab, ylab = vlab ) abline(0,1) #Below is where I am having trouble as discussed above text(20,60,cat("Lin's Concordance Coefficient = ",lincc)) print(agree) } #executes the function lin(o1,o2)
You want to use paste() inside text(), not cat(). Andy> From: Craig H. Ziegler [mailto:chzieg01 at athena.louisville.edu] > > Dear All, > > I am new to R and am trying to learn how to create functions > using R. Below is code which calculates Lin's Concordance > Coefficient. After I calculate the coefficient I want to > create a scatter plot which annotates the coefficient along > with preceding text onto the plot. The below code doesn't > seem to work. If I use only the object 'lincc' on the text > command it works (but doesn't give me the preceding > text) or if I use only "Lin's Concordance Coefficient = " on > the text command it works (but doesn't place on the plot the > value for the object 'lincc'). Similarly, I have tried using: > linc=cat("Lin's Concordance Coefficient = ",lincc) > within the function and then specifying: > text(20,60,(linc) > > Also, the objects I create inside a "user defined function" > are internal to the function. Is there anyway/command that > can make them external, i.e., make them exists to perform > tasks on outside the user defined function. > > Can anyone offer some advise as to what I am doing wrong? > > Thanks, > > Craig Ziegler > ************************************************************** > # o1 is the x vector > # o2 is the y vector > # I am trying to correlate these vectors to get > # Lin's Concordance Coeffient. These are just > # test vectors > o1=c(11,9,54,55,50,44,58,5,21,58,41,59,39,34,23) > o2=c(27,15,72,63,65,49,51,8,30,43,40,62,52,49,21) > > #title is a specification for the plot title; see 'main = > title' in the #plot function #hlab is the x axis label; see > "xlab = hlab" in the plot function #vlab is the y axis label; > see "ylab = vlab" in the plot function > > title="This is a test plot" > vlab="Label for verticle axis" > hlab="Label for horizontal axis" > > # Start of the function I call lin > > lin = function (x,y) > { > lincc > (2 * cov(x,y)) / > (var(x) + (var(y)) + > ((mean(x) - mean(y))^2)) > print(lincc) > > agree > plot(x,y,xlim=c(0,70),ylim=c(0,70), > main = title, xlab = hlab, ylab = vlab ) > abline(0,1) > > #Below is where I am having trouble as discussed above > > text(20,60,cat("Lin's Concordance Coefficient > = ",lincc)) > print(agree) > } > > #executes the function > lin(o1,o2) > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo> /r-help >
Try using paste() instead of cat() in> text(20,60,cat("Lin's Concordance Coefficient = ",lincc))The last expression in your function will be returned as the value of the function; that is the best way to get results out of a function and available for use outside the function. -Don At 12:49 PM -0500 11/7/03, Craig H. Ziegler wrote:>Dear All, > >I am new to R and am trying to learn how to create functions using R. >Below is code which calculates Lin's Concordance Coefficient. After >I calculate the coefficient I want to create a scatter plot which >annotates the coefficient along with preceding text onto the plot. >The below code doesn't seem to work. If I use only the object >'lincc' on the text command it works (but doesn't give me the preceding >text) or if I use only "Lin's Concordance Coefficient = " on the text >command it works (but doesn't place on the plot the value for the object >'lincc'). Similarly, I have tried using: > linc=cat("Lin's Concordance Coefficient = ",lincc) >within the function and then specifying: > text(20,60,(linc) > >Also, the objects I create inside a "user defined function" >are internal to the function. Is there anyway/command that >can make them external, i.e., make them exists to perform >tasks on outside the user defined function. > >Can anyone offer some advise as to what I am doing wrong? > >Thanks, > >Craig Ziegler >************************************************************** ># o1 is the x vector ># o2 is the y vector ># I am trying to correlate these vectors to get ># Lin's Concordance Coeffient. These are just ># test vectors >o1=c(11,9,54,55,50,44,58,5,21,58,41,59,39,34,23) >o2=c(27,15,72,63,65,49,51,8,30,43,40,62,52,49,21) > >#title is a specification for the plot title; see 'main = title' in the >#plot function >#hlab is the x axis label; see "xlab = hlab" in the plot function >#vlab is the y axis label; see "ylab = vlab" in the plot function > >title="This is a test plot" >vlab="Label for verticle axis" >hlab="Label for horizontal axis" > ># Start of the function I call lin > >lin = function (x,y) > { > lincc > (2 * cov(x,y)) / > (var(x) + (var(y)) + > ((mean(x) - mean(y))^2)) > print(lincc) > > agree > plot(x,y,xlim=c(0,70),ylim=c(0,70), > main = title, xlab = hlab, ylab = vlab ) > abline(0,1) > > #Below is where I am having trouble as discussed above > > text(20,60,cat("Lin's Concordance Coefficient = ",lincc)) > print(agree) > } > >#executes the function >lin(o1,o2) > >______________________________________________ >R-help at stat.math.ethz.ch mailing list >https://www.stat.math.ethz.ch/mailman/listinfo/r-help-- -------------------------------------- Don MacQueen Environmental Protection Department Lawrence Livermore National Laboratory Livermore, CA, USA