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> 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]]
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> 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> > 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> 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 mailing list -- To UNSUBSCRIBE and more, see >> 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]]
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]]