[R] R Markdown and scan()

John Fox jfox at mcmaster.ca
Sat Oct 25 22:50:05 CEST 2014


Dear Yihui,

OK -- thanks. That's what I figured, but I hoped that there were something I missed.

Best,
 John

On Sat, 25 Oct 2014 13:53:21 -0500
 Yihui Xie <xie at yihui.name> wrote:
> RStudio uses a non-interactive R session to compile R Markdown
> documents, which means the functions that involve human interaction
> will not work. The only way to make these functions work is to use an
> interactive R session, which basically means you should not click the
> button in RStudio to compile the documents, but should type
> rmarkdown::render() in the R console instead. You cannot put the
> numbers under scan() and expect they will be read by scan() as if they
> were typed by a human, even though they look similar.
> 
> If the function in your case only allows file input for scan(), I
> guess the only way is to make a connection, such as textConnection()
> as you mentioned.
> 
> Regards,
> Yihui
> --
> Yihui Xie <xieyihui at gmail.com>
> Web: http://yihui.name
> 
> 
> On Sat, Oct 25, 2014 at 10:58 AM, John Fox <jfox at mcmaster.ca> wrote:
> > Dear Peter,
> >
> > Thanks for the suggestion -- it's a bit better for the example I provided than my approach of using textConnection() of putting the lines in a file.
> >
> > I'd still be interested in whether I've missed something like a text-chunk option that would allow the R Markdown document to behave like a script executed at the console. For example, your approach doesn't work for the application where I encountered the problem, which is in a function that calls scan() and that passes the file argument to it, but doesn't use the text argument.
> >
> > Best,
> >  John
> >
> > On Sat, 25 Oct 2014 17:11:14 +0200
> >  peter dalgaard <pdalgd at gmail.com> wrote:
> >>
> >> > On 25 Oct 2014, at 16:43 , John Fox <jfox at mcmaster.ca> wrote:
> >> >
> >> > Dear JJ and list members,
> >> >
> >> > I wonder whether it's possible to get scan() to read in-line data in an R Markdown document. The following code, for example, works (of course) when entered in the R console but fails in an R block in an R Markdown document (using an up-to-date version of RStudio):
> >> >
> >> > ```{r}
> >> > x <- scan()
> >> > 1 2 3
> >> > 4 5 6
> >> >
> >> > x
> >> > ````
> >> >
> >> > I'm aware of a couple of work-arounds, such as putting the data in a file or a character string (as below), but am interested in whether it's possible to get this to work directly.
> >> >
> >> > ```{r}
> >> > text <- "
> >> > 1 2 3
> >> > 4 5 6
> >> > "
> >> > (x <- scan(file=textConnection(text)))
> >> > ````
> >> >
> >> > Any help would be appreciated.
> >>
> >> This generally isn't easy. You can't source() a file like that either, it only works on std.input, and even there it is tricky it you have tabs in the (pasted) data. Notice that
> >>
> >> scan(text="
> >> 1 2 3
> >> 4 5 6
> >> ")
> >>
> >> was designed for the purpose of reading inline data.
> >>
> >>
> >> --
> >> Peter Dalgaard, Professor,
> >> Center for Statistics, Copenhagen Business School
> >> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> >> Phone: (+45)38153501
> >> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list