How to select the column header with \Sexpr{}

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

How to select the column header with \Sexpr{}

Felipe Carrillo
Hi:
Since I work with a few different fish runs my column headers change everytime
I start a new Year. I have been using \Sexpr{} for my row and columns and now
I am trying to use with my report column headers. \Sexpr{1,1} is row 1 column 1,
what can I use for headers? I tried \Sexpr{0,1} but sweave didn't like
it..Thanks in advance
for any hints

 
Felipe D. Carrillo
Supervisory Fishery Biologist
Department of the Interior
US Fish & Wildlife Service
California, USA


   
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: How to select the column header with \Sexpr{}

Duncan Murdoch-2
On 12/07/2010 5:10 PM, Felipe Carrillo wrote:
> Hi:
> Since I work with a few different fish runs my column headers change everytime
> I start a new Year. I have been using \Sexpr{} for my row and columns and now
> I am trying to use with my report column headers. \Sexpr{1,1} is row 1 column 1,
> what can I use for headers? I tried \Sexpr{0,1} but sweave didn't like
> it..Thanks in advance
> for any hints
>

\Sexpr takes an R expression, and inserts the first element of the
result into your text.  Using just "0,1" (not including the quotes) is
not a valid R expression.

You need to use paste() or some other function to construct the label
you want to put in place, e.g. \Sexpr{paste(0,1,sep=",")} will give you
"0,1".

Duncan Murdoch

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: How to select the column header with \Sexpr{}

Felipe Carrillo
Thanks for the quick reply Duncan.
I don't think I have explained myself well, I have a dataset named "report" and
my column headers are run1,run2,run3,run4 and so on.

I know how to access the data below those columns with \Sexpr{report[1,1]} &
&\Sexpr{report[1,2]} and so on, but I can't access my column headers
with \Sexpr{} because I can't find the way to reference run1,run2,run3 and run4.
Sorry if I am not explain myself really well.
 



----- Original Message ----

> From: Duncan Murdoch <[hidden email]>
> To: Felipe Carrillo <[hidden email]>
> Cc: [hidden email]
> Sent: Mon, July 12, 2010 2:18:15 PM
> Subject: Re: [R] How to select the column header with \Sexpr{}
>
> On 12/07/2010 5:10 PM, Felipe Carrillo wrote:
> > Hi:
> > Since I work with a few different fish runs my column headers change
>everytime
> > I start a new Year. I have been using \Sexpr{} for my row and columns and now
>I am trying to use with my report column headers. \Sexpr{1,1} is row 1 column 1,
> > what can I use for headers? I tried \Sexpr{0,1} but sweave didn't like
>it..Thanks in advance
> > for any hints
> >
>
> \Sexpr takes an R expression, and inserts the first element of the result into
>your text.  Using just "0,1" (not including the quotes) is not a valid R
>expression.
>
> You need to use paste() or some other function to construct the label you want
>to put in place, e.g. \Sexpr{paste(0,1,sep=",")} will give you "0,1".
>
> Duncan Murdoch
>




______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: How to select the column header with \Sexpr{}

David Winsemius

On Jul 12, 2010, at 5:45 PM, Felipe Carrillo wrote:

> Thanks for the quick reply Duncan.
> I don't think I have explained myself well, I have a dataset named  
> "report" and
> my column headers are run1,run2,run3,run4 and so on.
>
> I know how to access the data below those columns with  
> \Sexpr{report[1,1]} &
> &\Sexpr{report[1,2]} and so on, but I can't access my column headers
> with \Sexpr{} because I can't find the way to reference  
> run1,run2,run3 and run4.
> Sorry if I am not explain myself really well.

Wouldn't this just be:

\Sexpr{names(report)}  # ?  or perhaps you want specific items in that  
vector?

Sexpr{names(report)[1]}, Sexpr{names(report)[2]}, etc

--
David.

>
>
>
>
> ----- Original Message ----
>> From: Duncan Murdoch <[hidden email]>
>> To: Felipe Carrillo <[hidden email]>
>> Cc: [hidden email]
>> Sent: Mon, July 12, 2010 2:18:15 PM
>> Subject: Re: [R] How to select the column header with \Sexpr{}
>>
>> On 12/07/2010 5:10 PM, Felipe Carrillo wrote:
>>> Hi:
>>> Since I work with a few different fish runs my column headers change
>> everytime
>>> I start a new Year. I have been using \Sexpr{} for my row and  
>>> columns and now
>> I am trying to use with my report column headers. \Sexpr{1,1} is  
>> row 1 column 1,
>>> what can I use for headers? I tried \Sexpr{0,1} but sweave didn't  
>>> like
>> it..Thanks in advance
>>> for any hints
>>>
>>
>> \Sexpr takes an R expression, and inserts the first element of the  
>> result into
>> your text.  Using just "0,1" (not including the quotes) is not a  
>> valid R
>> expression.
>>
>> You need to use paste() or some other function to construct the  
>> label you want
>> to put in place, e.g. \Sexpr{paste(0,1,sep=",")} will give you "0,1".
>>
>> Duncan Murdoch
>>
>
>
>
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: How to select the column header with \Sexpr{}

Felipe Carrillo
I had tried that earlier and didn't work either, I probably have \Sexpr in the
wrong place. See example:
Column one header gets blank:

\documentclass[11pt]{article}
\usepackage{longtable,verbatim,ctable}
\usepackage{longtable,pdflscape}
\usepackage{fmtcount,hyperref}
\usepackage{fullpage}
\title{United States}
\begin{document}
\setkeys{Gin}{width=1\textwidth}
\maketitle
<<echo=F,results=hide>>=
report <- structure(list(Date = c("3/12/2010", "3/13/2010", "3/14/2010",
"3/15/2010"), Run1 = c("33 (119 ? 119)", "n (0 ? 0)", "893 (110 ? 146)",
"140 (111 ? 150)"), Run2 = c("33 (71 ? 71)", "n (0 ? 0)",
"337 (67 ? 74)", "140 (68 ? 84)"), Run3 = c("890 (32 ? 47)",
"n (0 ? 0)", "10,602 (32 ? 52)", "2,635 (34 ? 66)"), Run4 = c("0 ( ? )",
"n (0 ? 0)", "0 ( ? )", "0 ( ? )"), Run4 = c("0 ( ? )", "n (0 ? 0)",
"0 ( ? )", "0 ( ? )")), .Names = c("ID_Date", "Run1", "Run2",
"Run3", "Run4", "Run5"), row.names = c(NA, 4L), class = "data.frame")
require(stringr)
report <- t(apply(report, 1, function(x) {str_replace(x, "\\?", "-")}))
#report
#latex(report,file="")
@
\begin{landscape}
\begin{table}[!tbp]
 \begin{center}
 \begin{tabular}{llllll}\hline\hline
\multicolumn{1}{c}{\Sexpr{names(report)[1]}}   # Using \Sexpr here
&\multicolumn{1}{c}{Run1}
&\multicolumn{1}{c}{Run2}
&\multicolumn{1}{c}{Run3}
&\multicolumn{1}{c}{Run4}
&\multicolumn{1}{c}{Run5}\tabularnewline
\hline
1&3/12/2010&33 (119 ? 119)&33 (71 ? 71)&890 (32 ? 47)&0 ( ? )&0 ( ?
)\tabularnewline
2&3/13/2010&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)\tabularnewline
3&3/14/2010&893 (110 ? 146)&337 (67 ? 74)&10,602 (32 ? 52)&0 ( ? )&0 ( ?
)\tabularnewline
4&3/15/2010&140 (111 ? 150)&140 (68 ? 84)&2,635 (34 ? 66)&0 ( ? )&0 ( ?
)\tabularnewline
\hline
\end{tabular}
\end{center}
\end{table}
\end{landscape}
\end{document}
 
Felipe D. Carrillo
Supervisory Fishery Biologist
Department of the Interior
US Fish & Wildlife Service
California, USA



----- Original Message ----

> From: David Winsemius <[hidden email]>
> To: Felipe Carrillo <[hidden email]>
> Cc: Duncan Murdoch <[hidden email]>; [hidden email]
> Sent: Mon, July 12, 2010 3:14:49 PM
> Subject: Re: [R] How to select the column header with \Sexpr{}
>
>
> On Jul 12, 2010, at 5:45 PM, Felipe Carrillo wrote:
>
> > Thanks for the quick reply Duncan.
> > I don't think I have explained myself well, I have a dataset named "report"
>and
> > my column headers are run1,run2,run3,run4 and so on.
> >
> > I know how to access the data below those columns with \Sexpr{report[1,1]} &
> > &\Sexpr{report[1,2]} and so on, but I can't access my column headers
> > with \Sexpr{} because I can't find the way to reference run1,run2,run3 and
>run4.
> > Sorry if I am not explain myself really well.
>
> Wouldn't this just be:
>
> \Sexpr{names(report)}  # ?  or perhaps you want specific items in that vector?
>
> Sexpr{names(report)[1]}, Sexpr{names(report)[2]}, etc
>
> --David.
> >
> >
> >
> >
> > ----- Original Message ----
> >> From: Duncan Murdoch <[hidden email]>
> >> To: Felipe Carrillo <[hidden email]>
> >> Cc: [hidden email]
> >> Sent: Mon, July 12, 2010 2:18:15 PM
> >> Subject: Re: [R] How to select the column header with \Sexpr{}
> >>
> >> On 12/07/2010 5:10 PM, Felipe Carrillo wrote:
> >>> Hi:
> >>> Since I work with a few different fish runs my column headers change
> >> everytime
> >>> I start a new Year. I have been using \Sexpr{} for my row and columns and
>now
> >> I am trying to use with my report column headers. \Sexpr{1,1} is row 1
>column 1,
> >>> what can I use for headers? I tried \Sexpr{0,1} but sweave didn't like
> >> it..Thanks in advance
> >>> for any hints
> >>>
> >>
> >> \Sexpr takes an R expression, and inserts the first element of the result
>into
> >> your text.  Using just "0,1" (not including the quotes) is not a valid R
> >> expression.
> >>
> >> You need to use paste() or some other function to construct the label you
>want
> >> to put in place, e.g. \Sexpr{paste(0,1,sep=",")} will give you "0,1".
> >>
> >> Duncan Murdoch
> >>
> >
> >
> >
> >
> > ______________________________________________
> > [hidden email] mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>
> David Winsemius, MD
> West Hartford, CT
>
>


 
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: How to select the column header with \Sexpr{}

Ista Zahn-2
Hi Felipe,
The problem has nothing to do with Sweave or \Sexpr. The problem is
that by the time you call \Sexpr report is a matrix, and you cannot
access the column names of a matrix with names(). You need to use
colnames() or convert the matrix to a data.frame.

Perhaps a true useR can write R code in a Sweave file without checking
it, but for mere mortals it is best to evaluate the R code in an
interactive session to make sure it works before asking Sweave to
insert it into your .tex file. If you had tried to evaluate
names(report)[1] in an interactive session you would have discovered
your problem immediately.

Best,
Ista

On Tue, Jul 13, 2010 at 4:15 AM, Felipe Carrillo
<[hidden email]> wrote:

> I had tried that earlier and didn't work either, I probably have \Sexpr in the
> wrong place. See example:
> Column one header gets blank:
>
> \documentclass[11pt]{article}
> \usepackage{longtable,verbatim,ctable}
> \usepackage{longtable,pdflscape}
> \usepackage{fmtcount,hyperref}
> \usepackage{fullpage}
> \title{United States}
> \begin{document}
> \setkeys{Gin}{width=1\textwidth}
> \maketitle
> <<echo=F,results=hide>>=
> report <- structure(list(Date = c("3/12/2010", "3/13/2010", "3/14/2010",
> "3/15/2010"), Run1 = c("33 (119 ? 119)", "n (0 ? 0)", "893 (110 ? 146)",
> "140 (111 ? 150)"), Run2 = c("33 (71 ? 71)", "n (0 ? 0)",
> "337 (67 ? 74)", "140 (68 ? 84)"), Run3 = c("890 (32 ? 47)",
> "n (0 ? 0)", "10,602 (32 ? 52)", "2,635 (34 ? 66)"), Run4 = c("0 ( ? )",
> "n (0 ? 0)", "0 ( ? )", "0 ( ? )"), Run4 = c("0 ( ? )", "n (0 ? 0)",
> "0 ( ? )", "0 ( ? )")), .Names = c("ID_Date", "Run1", "Run2",
> "Run3", "Run4", "Run5"), row.names = c(NA, 4L), class = "data.frame")
> require(stringr)
> report <- t(apply(report, 1, function(x) {str_replace(x, "\\?", "-")}))
> #report
> #latex(report,file="")
> @
> \begin{landscape}
> \begin{table}[!tbp]
>  \begin{center}
>  \begin{tabular}{llllll}\hline\hline
> \multicolumn{1}{c}{\Sexpr{names(report)[1]}}   # Using \Sexpr here
> &\multicolumn{1}{c}{Run1}
> &\multicolumn{1}{c}{Run2}
> &\multicolumn{1}{c}{Run3}
> &\multicolumn{1}{c}{Run4}
> &\multicolumn{1}{c}{Run5}\tabularnewline
> \hline
> 1&3/12/2010&33 (119 ? 119)&33 (71 ? 71)&890 (32 ? 47)&0 ( ? )&0 ( ?
> )\tabularnewline
> 2&3/13/2010&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)\tabularnewline
> 3&3/14/2010&893 (110 ? 146)&337 (67 ? 74)&10,602 (32 ? 52)&0 ( ? )&0 ( ?
> )\tabularnewline
> 4&3/15/2010&140 (111 ? 150)&140 (68 ? 84)&2,635 (34 ? 66)&0 ( ? )&0 ( ?
> )\tabularnewline
> \hline
> \end{tabular}
> \end{center}
> \end{table}
> \end{landscape}
> \end{document}
>
> Felipe D. Carrillo
> Supervisory Fishery Biologist
> Department of the Interior
> US Fish & Wildlife Service
> California, USA
>
>
>
> ----- Original Message ----
>> From: David Winsemius <[hidden email]>
>> To: Felipe Carrillo <[hidden email]>
>> Cc: Duncan Murdoch <[hidden email]>; [hidden email]
>> Sent: Mon, July 12, 2010 3:14:49 PM
>> Subject: Re: [R] How to select the column header with \Sexpr{}
>>
>>
>> On Jul 12, 2010, at 5:45 PM, Felipe Carrillo wrote:
>>
>> > Thanks for the quick reply Duncan.
>> > I don't think I have explained myself well, I have a dataset named "report"
>>and
>> > my column headers are run1,run2,run3,run4 and so on.
>> >
>> > I know how to access the data below those columns with \Sexpr{report[1,1]} &
>> > &\Sexpr{report[1,2]} and so on, but I can't access my column headers
>> > with \Sexpr{} because I can't find the way to reference run1,run2,run3 and
>>run4.
>> > Sorry if I am not explain myself really well.
>>
>> Wouldn't this just be:
>>
>> \Sexpr{names(report)}  # ?  or perhaps you want specific items in that vector?
>>
>> Sexpr{names(report)[1]}, Sexpr{names(report)[2]}, etc
>>
>> --David.
>> >
>> >
>> >
>> >
>> > ----- Original Message ----
>> >> From: Duncan Murdoch <[hidden email]>
>> >> To: Felipe Carrillo <[hidden email]>
>> >> Cc: [hidden email]
>> >> Sent: Mon, July 12, 2010 2:18:15 PM
>> >> Subject: Re: [R] How to select the column header with \Sexpr{}
>> >>
>> >> On 12/07/2010 5:10 PM, Felipe Carrillo wrote:
>> >>> Hi:
>> >>> Since I work with a few different fish runs my column headers change
>> >> everytime
>> >>> I start a new Year. I have been using \Sexpr{} for my row and columns and
>>now
>> >> I am trying to use with my report column headers. \Sexpr{1,1} is row 1
>>column 1,
>> >>> what can I use for headers? I tried \Sexpr{0,1} but sweave didn't like
>> >> it..Thanks in advance
>> >>> for any hints
>> >>>
>> >>
>> >> \Sexpr takes an R expression, and inserts the first element of the result
>>into
>> >> your text.  Using just "0,1" (not including the quotes) is not a valid R
>> >> expression.
>> >>
>> >> You need to use paste() or some other function to construct the label you
>>want
>> >> to put in place, e.g. \Sexpr{paste(0,1,sep=",")} will give you "0,1".
>> >>
>> >> Duncan Murdoch
>> >>
>> >
>> >
>> >
>> >
>> > ______________________________________________
>> > [hidden email] mailing list
>> > https://stat.ethz.ch/mailman/listinfo/r-help
>> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> > and provide commented, minimal, self-contained, reproducible code.
>>
>> David Winsemius, MD
>> West Hartford, CT
>>
>>
>
>
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



--
Ista Zahn
Graduate student
University of Rochester
Department of Clinical and Social Psychology
http://yourpsyche.org

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: How to select the column header with \Sexpr{}

Felipe Carrillo
Thanks Izta:
I see your point, then I should extract the column names when the
dataset is first read because is a dataframe:
 report <- structure(list(Date = c("3/12/2010", "3/13/2010", "3/14/2010",
 "3/15/2010"), Run1 = c("33 (119 ? 119)", "n (0 ? 0)", "893 (110 ? 146)",
 "140 (111 ? 150)"), Run2 = c("33 (71 ? 71)", "n (0 ? 0)",
 "337 (67 ? 74)", "140 (68 ? 84)"), Run3 = c("890 (32 ? 47)",
 "n (0 ? 0)", "10,602 (32 ? 52)", "2,635 (34 ? 66)"), Run4 = c("0 ( ? )",
 "n (0 ? 0)", "0 ( ? )", "0 ( ? )"), Run4 = c("0 ( ? )", "n (0 ? 0)",
"0 ( ? )", "0 ( ? )")), .Names = c("ID_Date", "Run1", "Run2",
"Run3", "Run4", "Run5"), row.names = c(NA, 4L), class = "data.frame")
str(report)
'data.frame':   4 obs. of  6 variables:
 $ ID_Date: chr  "3/12/2010" "3/13/2010" "3/14/2010" "3/15/2010"
 $ Run1   : chr  "33 (119 ? 119)" "n (0 ? 0)" "893 (110 ? 146)" "140 (111 ?
150)"
 $ Run2   : chr  "33 (71 ? 71)" "n (0 ? 0)" "337 (67 ? 74)" "140 (68 ? 84)"
 $ Run3   : chr  "890 (32 ? 47)" "n (0 ? 0)" "10,602 (32 ? 52)" "2,635 (34 ?
66)"
 $ Run4   : chr  "0 ( ? )" "n (0 ? 0)" "0 ( ? )" "0 ( ? )"
 $ Run5   : chr  "0 ( ? )" "n (0 ? 0)" "0 ( ? )" "0 ( ? )"
 names(report)[1]  # I can extract the column name here
[1] "Date"

But after I use 'stringr" to convert the character '?' to '-'
'report' is not a dataframe anymore and returns a NULL when trying to extract
the
column names.
I was not aware that \Sexpr{} only work on dataframes, thanks for your help.



----- Original Message ----

> From: Ista Zahn <[hidden email]>
> To: Felipe Carrillo <[hidden email]>
> Cc: David Winsemius <[hidden email]>; [hidden email]
> Sent: Tue, July 13, 2010 7:13:39 AM
> Subject: Re: [R] How to select the column header with \Sexpr{}
>
> Hi Felipe,
> The problem has nothing to do with Sweave or \Sexpr. The problem is
> that by the time you call \Sexpr report is a matrix, and you cannot
> access the column names of a matrix with names(). You need to use
> colnames() or convert the matrix to a data.frame.
>
> Perhaps a true useR can write R code in a Sweave file without checking
> it, but for mere mortals it is best to evaluate the R code in an
> interactive session to make sure it works before asking Sweave to
> insert it into your .tex file. If you had tried to evaluate
> names(report)[1] in an interactive session you would have discovered
> your problem immediately.
>
> Best,
> Ista
>
> On Tue, Jul 13, 2010 at 4:15 AM, Felipe Carrillo
> <[hidden email]> wrote:
> > I had tried that earlier and didn't work either, I probably have \Sexpr in
>the
> > wrong place. See example:
> > Column one header gets blank:
> >
> > \documentclass[11pt]{article}
> > \usepackage{longtable,verbatim,ctable}
> > \usepackage{longtable,pdflscape}
> > \usepackage{fmtcount,hyperref}
> > \usepackage{fullpage}
> > \title{United States}
> > \begin{document}
> > \setkeys{Gin}{width=1\textwidth}
> > \maketitle
> > <<echo=F,results=hide>>=
> > report <- structure(list(Date = c("3/12/2010", "3/13/2010", "3/14/2010",
> > "3/15/2010"), Run1 = c("33 (119 ? 119)", "n (0 ? 0)", "893 (110 ? 146)",
> > "140 (111 ? 150)"), Run2 = c("33 (71 ? 71)", "n (0 ? 0)",
> > "337 (67 ? 74)", "140 (68 ? 84)"), Run3 = c("890 (32 ? 47)",
> > "n (0 ? 0)", "10,602 (32 ? 52)", "2,635 (34 ? 66)"), Run4 = c("0 ( ? )",
> > "n (0 ? 0)", "0 ( ? )", "0 ( ? )"), Run4 = c("0 ( ? )", "n (0 ? 0)",
> > "0 ( ? )", "0 ( ? )")), .Names = c("ID_Date", "Run1", "Run2",
> > "Run3", "Run4", "Run5"), row.names = c(NA, 4L), class = "data.frame")
> > require(stringr)
> > report <- t(apply(report, 1, function(x) {str_replace(x, "\\?", "-")}))
> > #report
> > #latex(report,file="")
> > @
> > \begin{landscape}
> > \begin{table}[!tbp]
> >  \begin{center}
> >  \begin{tabular}{llllll}\hline\hline
> > \multicolumn{1}{c}{\Sexpr{names(report)[1]}}   # Using \Sexpr here
> > &\multicolumn{1}{c}{Run1}
> > &\multicolumn{1}{c}{Run2}
> > &\multicolumn{1}{c}{Run3}
> > &\multicolumn{1}{c}{Run4}
> > &\multicolumn{1}{c}{Run5}\tabularnewline
> > \hline
> > 1&3/12/2010&33 (119 ? 119)&33 (71 ? 71)&890 (32 ? 47)&0 ( ? )&0 ( ?
> > )\tabularnewline
> > 2&3/13/2010&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)\tabularnewline
> > 3&3/14/2010&893 (110 ? 146)&337 (67 ? 74)&10,602 (32 ? 52)&0 ( ? )&0 ( ?
> > )\tabularnewline
> > 4&3/15/2010&140 (111 ? 150)&140 (68 ? 84)&2,635 (34 ? 66)&0 ( ? )&0 ( ?
> > )\tabularnewline
> > \hline
> > \end{tabular}
> > \end{center}
> > \end{table}
> > \end{landscape}
> > \end{document}
> >
> > Felipe D. Carrillo
> > Supervisory Fishery Biologist
> > Department of the Interior
> > US Fish & Wildlife Service
> > California, USA
> >
> >
> >
> > ----- Original Message ----
> >> From: David Winsemius <[hidden email]>
> >> To: Felipe Carrillo <[hidden email]>
> >> Cc: Duncan Murdoch <[hidden email]>; [hidden email]
> >> Sent: Mon, July 12, 2010 3:14:49 PM
> >> Subject: Re: [R] How to select the column header with \Sexpr{}
> >>
> >>
> >> On Jul 12, 2010, at 5:45 PM, Felipe Carrillo wrote:
> >>
> >> > Thanks for the quick reply Duncan.
> >> > I don't think I have explained myself well, I have a dataset named
>"report"
> >>and
> >> > my column headers are run1,run2,run3,run4 and so on.
> >> >
> >> > I know how to access the data below those columns with \Sexpr{report[1,1]}
>&
> >> > &\Sexpr{report[1,2]} and so on, but I can't access my column headers
> >> > with \Sexpr{} because I can't find the way to reference run1,run2,run3
and

> >>run4.
> >> > Sorry if I am not explain myself really well.
> >>
> >> Wouldn't this just be:
> >>
> >> \Sexpr{names(report)}  # ?  or perhaps you want specific items in that
>vector?
> >>
> >> Sexpr{names(report)[1]}, Sexpr{names(report)[2]}, etc
> >>
> >> --David.
> >> >
> >> >
> >> >
> >> >
> >> > ----- Original Message ----
> >> >> From: Duncan Murdoch <[hidden email]>
> >> >> To: Felipe Carrillo <[hidden email]>
> >> >> Cc: [hidden email]
> >> >> Sent: Mon, July 12, 2010 2:18:15 PM
> >> >> Subject: Re: [R] How to select the column header with \Sexpr{}
> >> >>
> >> >> On 12/07/2010 5:10 PM, Felipe Carrillo wrote:
> >> >>> Hi:
> >> >>> Since I work with a few different fish runs my column headers change
> >> >> everytime
> >> >>> I start a new Year. I have been using \Sexpr{} for my row and columns
>and
> >>now
> >> >> I am trying to use with my report column headers. \Sexpr{1,1} is row 1
> >>column 1,
> >> >>> what can I use for headers? I tried \Sexpr{0,1} but sweave didn't like
> >> >> it..Thanks in advance
> >> >>> for any hints
> >> >>>
> >> >>
> >> >> \Sexpr takes an R expression, and inserts the first element of the
result
> >>into
> >> >> your text.  Using just "0,1" (not including the quotes) is not a valid R
> >> >> expression.
> >> >>
> >> >> You need to use paste() or some other function to construct the label
you

> >>want
> >> >> to put in place, e.g. \Sexpr{paste(0,1,sep=",")} will give you "0,1".
> >> >>
> >> >> Duncan Murdoch
> >> >>
> >> >
> >> >
> >> >
> >> >
> >> > ______________________________________________
> >> > [hidden email] mailing list
> >> > https://stat.ethz.ch/mailman/listinfo/r-help
> >> > PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
> >> > and provide commented, minimal, self-contained, reproducible code.
> >>
> >> David Winsemius, MD
> >> West Hartford, CT
> >>
> >>
> >
> >
> >
> > ______________________________________________
> > [hidden email] mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
>
>
>
> --
> Ista Zahn
> Graduate student
> University of Rochester
> Department of Clinical and Social Psychology
> http://yourpsyche.org
>




______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: How to select the column header with \Sexpr{}

Ista Zahn-2
Hi Felipe,
See in line below.

On Tue, Jul 13, 2010 at 11:04 AM, Felipe Carrillo
<[hidden email]> wrote:
> Thanks Izta:
> I see your point, then I should extract the column names when the
> dataset is first read because is a dataframe:

That might work, but it's definitely not how I would do it.

>  report <- structure(list(Date = c("3/12/2010", "3/13/2010", "3/14/2010",
>  "3/15/2010"), Run1 = c("33 (119 ? 119)", "n (0 ? 0)", "893 (110 ? 146)",
>  "140 (111 ? 150)"), Run2 = c("33 (71 ? 71)", "n (0 ? 0)",
>  "337 (67 ? 74)", "140 (68 ? 84)"), Run3 = c("890 (32 ? 47)",
>  "n (0 ? 0)", "10,602 (32 ? 52)", "2,635 (34 ? 66)"), Run4 = c("0 ( ? )",
>  "n (0 ? 0)", "0 ( ? )", "0 ( ? )"), Run4 = c("0 ( ? )", "n (0 ? 0)",
> "0 ( ? )", "0 ( ? )")), .Names = c("ID_Date", "Run1", "Run2",
> "Run3", "Run4", "Run5"), row.names = c(NA, 4L), class = "data.frame")
> str(report)
> 'data.frame':   4 obs. of  6 variables:
>  $ ID_Date: chr  "3/12/2010" "3/13/2010" "3/14/2010" "3/15/2010"
>  $ Run1   : chr  "33 (119 ? 119)" "n (0 ? 0)" "893 (110 ? 146)" "140 (111 ?
> 150)"
>  $ Run2   : chr  "33 (71 ? 71)" "n (0 ? 0)" "337 (67 ? 74)" "140 (68 ? 84)"
>  $ Run3   : chr  "890 (32 ? 47)" "n (0 ? 0)" "10,602 (32 ? 52)" "2,635 (34 ?
> 66)"
>  $ Run4   : chr  "0 ( ? )" "n (0 ? 0)" "0 ( ? )" "0 ( ? )"
>  $ Run5   : chr  "0 ( ? )" "n (0 ? 0)" "0 ( ? )" "0 ( ? )"
>  names(report)[1]  # I can extract the column name here
> [1] "Date"
>
> But after I use 'stringr" to convert the character '?' to '-'
> 'report' is not a dataframe anymore and returns a NULL when trying to extract
> the
> column names.

No, it will not report NULL when extracting _column names_. Try
colnames(report). It will report NULL when trying to extract the
_names_ using names(report), because matrices have colnames and
rownames but not names.

> I was not aware that \Sexpr{} only work on dataframes, thanks for your help.

The problem is _not with \Sexpr_. The problem is that you are asking
for the names() of a matrix, which do not exist in R. You can use
colnames() like this

\Sexpr{colnames(report)[1]}

or you can convert report to a data.frame and use names, like this

\Sexpr{names(as.data.frame(report))[1]}

HTH,
Ista

>
>
>
> ----- Original Message ----
>> From: Ista Zahn <[hidden email]>
>> To: Felipe Carrillo <[hidden email]>
>> Cc: David Winsemius <[hidden email]>; [hidden email]
>> Sent: Tue, July 13, 2010 7:13:39 AM
>> Subject: Re: [R] How to select the column header with \Sexpr{}
>>
>> Hi Felipe,
>> The problem has nothing to do with Sweave or \Sexpr. The problem is
>> that by the time you call \Sexpr report is a matrix, and you cannot
>> access the column names of a matrix with names(). You need to use
>> colnames() or convert the matrix to a data.frame.
>>
>> Perhaps a true useR can write R code in a Sweave file without checking
>> it, but for mere mortals it is best to evaluate the R code in an
>> interactive session to make sure it works before asking Sweave to
>> insert it into your .tex file. If you had tried to evaluate
>> names(report)[1] in an interactive session you would have discovered
>> your problem immediately.
>>
>> Best,
>> Ista
>>
>> On Tue, Jul 13, 2010 at 4:15 AM, Felipe Carrillo
>> <[hidden email]> wrote:
>> > I had tried that earlier and didn't work either, I probably have \Sexpr in
>>the
>> > wrong place. See example:
>> > Column one header gets blank:
>> >
>> > \documentclass[11pt]{article}
>> > \usepackage{longtable,verbatim,ctable}
>> > \usepackage{longtable,pdflscape}
>> > \usepackage{fmtcount,hyperref}
>> > \usepackage{fullpage}
>> > \title{United States}
>> > \begin{document}
>> > \setkeys{Gin}{width=1\textwidth}
>> > \maketitle
>> > <<echo=F,results=hide>>=
>> > report <- structure(list(Date = c("3/12/2010", "3/13/2010", "3/14/2010",
>> > "3/15/2010"), Run1 = c("33 (119 ? 119)", "n (0 ? 0)", "893 (110 ? 146)",
>> > "140 (111 ? 150)"), Run2 = c("33 (71 ? 71)", "n (0 ? 0)",
>> > "337 (67 ? 74)", "140 (68 ? 84)"), Run3 = c("890 (32 ? 47)",
>> > "n (0 ? 0)", "10,602 (32 ? 52)", "2,635 (34 ? 66)"), Run4 = c("0 ( ? )",
>> > "n (0 ? 0)", "0 ( ? )", "0 ( ? )"), Run4 = c("0 ( ? )", "n (0 ? 0)",
>> > "0 ( ? )", "0 ( ? )")), .Names = c("ID_Date", "Run1", "Run2",
>> > "Run3", "Run4", "Run5"), row.names = c(NA, 4L), class = "data.frame")
>> > require(stringr)
>> > report <- t(apply(report, 1, function(x) {str_replace(x, "\\?", "-")}))
>> > #report
>> > #latex(report,file="")
>> > @
>> > \begin{landscape}
>> > \begin{table}[!tbp]
>> >  \begin{center}
>> >  \begin{tabular}{llllll}\hline\hline
>> > \multicolumn{1}{c}{\Sexpr{names(report)[1]}}   # Using \Sexpr here
>> > &\multicolumn{1}{c}{Run1}
>> > &\multicolumn{1}{c}{Run2}
>> > &\multicolumn{1}{c}{Run3}
>> > &\multicolumn{1}{c}{Run4}
>> > &\multicolumn{1}{c}{Run5}\tabularnewline
>> > \hline
>> > 1&3/12/2010&33 (119 ? 119)&33 (71 ? 71)&890 (32 ? 47)&0 ( ? )&0 ( ?
>> > )\tabularnewline
>> > 2&3/13/2010&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)&n (0 ? 0)\tabularnewline
>> > 3&3/14/2010&893 (110 ? 146)&337 (67 ? 74)&10,602 (32 ? 52)&0 ( ? )&0 ( ?
>> > )\tabularnewline
>> > 4&3/15/2010&140 (111 ? 150)&140 (68 ? 84)&2,635 (34 ? 66)&0 ( ? )&0 ( ?
>> > )\tabularnewline
>> > \hline
>> > \end{tabular}
>> > \end{center}
>> > \end{table}
>> > \end{landscape}
>> > \end{document}
>> >
>> > Felipe D. Carrillo
>> > Supervisory Fishery Biologist
>> > Department of the Interior
>> > US Fish & Wildlife Service
>> > California, USA
>> >
>> >
>> >
>> > ----- Original Message ----
>> >> From: David Winsemius <[hidden email]>
>> >> To: Felipe Carrillo <[hidden email]>
>> >> Cc: Duncan Murdoch <[hidden email]>; [hidden email]
>> >> Sent: Mon, July 12, 2010 3:14:49 PM
>> >> Subject: Re: [R] How to select the column header with \Sexpr{}
>> >>
>> >>
>> >> On Jul 12, 2010, at 5:45 PM, Felipe Carrillo wrote:
>> >>
>> >> > Thanks for the quick reply Duncan.
>> >> > I don't think I have explained myself well, I have a dataset named
>>"report"
>> >>and
>> >> > my column headers are run1,run2,run3,run4 and so on.
>> >> >
>> >> > I know how to access the data below those columns with \Sexpr{report[1,1]}
>>&
>> >> > &\Sexpr{report[1,2]} and so on, but I can't access my column headers
>> >> > with \Sexpr{} because I can't find the way to reference run1,run2,run3
> and
>> >>run4.
>> >> > Sorry if I am not explain myself really well.
>> >>
>> >> Wouldn't this just be:
>> >>
>> >> \Sexpr{names(report)}  # ?  or perhaps you want specific items in that
>>vector?
>> >>
>> >> Sexpr{names(report)[1]}, Sexpr{names(report)[2]}, etc
>> >>
>> >> --David.
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > ----- Original Message ----
>> >> >> From: Duncan Murdoch <[hidden email]>
>> >> >> To: Felipe Carrillo <[hidden email]>
>> >> >> Cc: [hidden email]
>> >> >> Sent: Mon, July 12, 2010 2:18:15 PM
>> >> >> Subject: Re: [R] How to select the column header with \Sexpr{}
>> >> >>
>> >> >> On 12/07/2010 5:10 PM, Felipe Carrillo wrote:
>> >> >>> Hi:
>> >> >>> Since I work with a few different fish runs my column headers change
>> >> >> everytime
>> >> >>> I start a new Year. I have been using \Sexpr{} for my row and columns
>>and
>> >>now
>> >> >> I am trying to use with my report column headers. \Sexpr{1,1} is row 1
>> >>column 1,
>> >> >>> what can I use for headers? I tried \Sexpr{0,1} but sweave didn't like
>> >> >> it..Thanks in advance
>> >> >>> for any hints
>> >> >>>
>> >> >>
>> >> >> \Sexpr takes an R expression, and inserts the first element of the
> result
>> >>into
>> >> >> your text.  Using just "0,1" (not including the quotes) is not a valid R
>> >> >> expression.
>> >> >>
>> >> >> You need to use paste() or some other function to construct the label
> you
>> >>want
>> >> >> to put in place, e.g. \Sexpr{paste(0,1,sep=",")} will give you "0,1".
>> >> >>
>> >> >> Duncan Murdoch
>> >> >>
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > ______________________________________________
>> >> > [hidden email] mailing list
>> >> > https://stat.ethz.ch/mailman/listinfo/r-help
>> >> > PLEASE do read the posting guide
>>http://www.R-project.org/posting-guide.html
>> >> > and provide commented, minimal, self-contained, reproducible code.
>> >>
>> >> David Winsemius, MD
>> >> West Hartford, CT
>> >>
>> >>
>> >
>> >
>> >
>> > ______________________________________________
>> > [hidden email] mailing list
>> > https://stat.ethz.ch/mailman/listinfo/r-help
>> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> > and provide commented, minimal, self-contained, reproducible code.
>> >
>>
>>
>>
>> --
>> Ista Zahn
>> Graduate student
>> University of Rochester
>> Department of Clinical and Social Psychology
>> http://yourpsyche.org
>>
>
>
>
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



--
Ista Zahn
Graduate student
University of Rochester
Department of Clinical and Social Psychology
http://yourpsyche.org

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.