Skip to content

Trying to use pipes in R

6 messages · arun, Julio Sergio Santana, Duncan Murdoch +2 more

#
Hi,

If you want to just count the words in R, try this:
vec1<-c("uno dos tres", "cuatro cinco", "seis")
#get individual word count within quotes
res1<-unlist(lapply(strsplit(vec1, " "),length))
res1
#[1] 3 2 1

#get whole word count
length(unlist(strsplit(vec1, " ")))
#[1] 6





----- Original Message -----
From: Julio Sergio Santana <juliosergio at gmail.com>
To: r-help at r-project.org
Cc: 
Sent: Wednesday, September 12, 2012 1:40 PM
Subject: [R] Trying to use pipes in R

Hi,
I'm trying to use pipes in R. By now, I could launch the linux command "wc"
(to count words from a text), but
I don't know how to capture the results, say in a vector of chars...
Here is the R code I'm trying:

:> f <- pipe("wc", open="w")
:> writeLines(c("uno dos tres", "cuatro cinco", "seis"), f)
:> close(f)
:? ?  3? ? ?  6? ? ? 31

The result is just displayed but I couldn't put the result into a R
variable.
Do you have any comments on this?

Thanks,
-- Sergio.

??? [[alternative HTML version deleted]]

______________________________________________
R-help at r-project.org 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.
#
On 12/09/2012 1:40 PM, Julio Sergio Santana wrote:
The examples on the page don't show R both giving input and reading 
output from the same pipe.  I don't think you can set it up that way; R 
is only one process.  The usual approach is what is shown there:  write 
to a temporary file, then pipe the results of a command that works on 
that file back into R.  I guess you could also pipe some data into a 
command that writes a file, and then read that.

Duncan Murdoch
#
On Wed, Sep 12, 2012 at 12:40:54PM -0500, Julio Sergio Santana wrote:
Hi.

Try the following.

  writeLines(c("uno dos tres", "cuatro cinco", "seis"), "some_file.txt")
  out <- system("wc some_file.txt", intern=TRUE)
  out

  [1] " 3  6 31 some_file.txt"

Here, out is a character variable.

Hope this helps.

Petr Savicky.
#
Thanks you all,

With your recomendations I built my solution as follows:

 :> writeLines(c("uno dos tres", "cuatro cinco", "seis"), "tempfile.txt")
 :> o <- pipe("wc < tempfile.txt", open="r")
 :> readLines(o)
 :[1] " 3  6 31"

best regards,

  --Sergio.