[R] passing arguments to simple plotting program.

Gerard Smits smits.gerard.j at gmail.com
Tue May 9 18:58:33 CEST 2017


Seems so simple when you explain it.  Thanks very much.  Gerard


> On May 9, 2017, at 9:40 AM, Ulrik Stervbo <ulrik.stervbo at gmail.com> wrote:
> 
> Hi Gerard,
> Quotation marks are used for strings. In you function body you try to use the strings "indata" and "fig_descrip" (the latter will work but is not what you want).
> 
> In your current function call you pass the variable Figure as the value to the argument fig_descrip, followed by a lot of other stuff your function doesn't know what to do with.
> 
> Remove the quotation marks around indata and fig_descrip in the function body, call your function with:
> 
> plot_f1(indata=v5, n1=114, n2=119, n3=116, fig_descrip="Figure 2a\nChange in Composite Score at Visit 5 (Day 31)\nPer Protocol Population")
> 
> and you should be fine.
> 
> HTH
> 
> Ulrik
> 
> Gerard Smits <smits.gerard.j at gmail.com <mailto:smits.gerard.j at gmail.com>> schrieb am Di., 9. Mai 2017, 18:27:
> Hi Ulrik,
> 
> If I can trouble you with one more question.
> 
> Now trying to send a string to the main= .  I was able to pass the data name in data=in_data, but same logic is not working in passion the main string.
> 
> 
> plot_f1 <-function(indata,n1,n2,n3,fig_descrip) {
>   par(oma=c(2,2,2,2))
>   boxplot(formula = d_comp ~ rx_grp,
>           data="indata”,                    # <- worked fine here.
>           main="fig_descrip",
>           ylim=c(-10,5),
>           names=c(paste0("Placebo(N=", n1,  ")"),
> 	          paste0("Low Dose(N=", n2, ")"),
> 		  paste0("High Dose(N=", n3,")")),
>           ylab='Change from Baseline')
>   abline(h=c(0), col="lightgray")
> }
> 
> plot_f1(indata=v5, n1=114, n2=119, n3=116, fig_descrip=Figure 2a\nChange in Composite Score at Visit 5 (Day 31)\nPer Protocol Population)
> 
> Error Message: Error: unexpected numeric constant in "plot_f1(indata=v5, n1=114, n2=119, n3=116, fig_descrip=Figure 2”
> 
> Even this call gives the same error:  plot_f1(indata=v5, n1=114, n2=119, n3=116, fig_descrip=Figure)
> 
> 
> Thanks, 
> 
> Gerard
> 
> 
> 
> 
> 
> 
>> On May 8, 2017, at 11:40 PM, Ulrik Stervbo <ulrik.stervbo at gmail.com <mailto:ulrik.stervbo at gmail.com>> wrote:
>> 
> 
>> HI Gerard,
>> 
>> You get the literals because the variables are not implicitly expanded - 'Placebo(N=n1)  ' is just a string indicating the N = n1. 
>> 
>> What you want is to use paste() or paste0(): 
>> c(paste0("Placebo(N=", n1, ")"), paste0("Low Dose (N=", n2, ")"), paste0("High Dose (N=", n3, ")"))
>> should do it.
>> 
>> I was taught a long ago that attach() should be avoided to avoid name conflicts. Also, it makes it difficult to figure out which data is actually being used.
>> 
>> HTH
>> Ulrik
>> 
>> On Tue, 9 May 2017 at 06:44 Gerard Smits <smits.gerard.j at gmail.com <mailto:smits.gerard.j at gmail.com>> wrote:
>> Hi All,
>> 
>> I thought I’d try to get a function working instead of block copying code and editing. My backorund is more SAS, so using a SAS Macro would be easy, but not so lucky with R functions.
>> 
>> 
>> R being used on Mac Sierra 10.12.4:
>> 
>> R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
>> Copyright (C) 2016 The R Foundation for Statistical Computing
>> Platform: x86_64-apple-darwin13.4.0 (64-bit)
>> 
>> 
>> resp<-read.csv("//users//gerard//gs//r_work//xyz.csv", header = TRUE)
>> 
>> v5  <-subset(resp, subset=visit==5 & pp==1)
>> 
>> plot_f1 <-function(n1,n2,n3) {
>>   attach(v8)
>>   par(oma=c(2,2,2,2))
>>   boxplot(formula = d_comp ~ rx_grp,
>>           main="Figure 2\nChange in Composite Score at Visit 5 (Day 31)\nPer Protocol Population",
>>           ylim=c(-10,5),
>>           names=c('Placebo(N=n1)  ',
>>                   'Low Dose(N=n2) ',
>>                   'High Dose(N=n3)'),
>>           ylab='Change from Baseline')
>>   abline(h=c(0), col="lightgray")
>> }
>> 
>> plot_f1(n1=114, n2=119, n3=116)
>> 
>> The above is a simplified example where I am trying to pass 3 arguments, n1-n3, to be shown in the x-axis tables,  Instead of the numbers, I get the literal n1, n2, n3.
>> 
>> Any help appreciated.
>> 
>> Thanks,
>> 
>> Gerard
>> 
>> 
>> 
>> 
>>         [[alternative HTML version deleted]]
>> 
>> ______________________________________________
>> R-help at r-project.org <mailto:R-help at r-project.org> mailing list -- To UNSUBSCRIBE and more, see
>> 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.


	[[alternative HTML version deleted]]



More information about the R-help mailing list