Re: [R] How do I paste double quotes arround a character string?

From: Philip James Smith <philipsmith_at_alumni.albany.edu>
Date: Thu, 03 Jul 2008 06:35:50 -0400

He Ted:

My command will look like:

gnu.dat <- read.csv( pipe( "cut -d,
-f9,2669,2676,2684,506,467,423,6,16,622,474,2,403,19,436,400,444,430,390,2671,437,428,2686,23,21,2246,2326,2288,2282,2272,2360,2318,2262,476,502,605,519,523,527,531,535 /home/philipsmith/file_name.csv" ) )

This code uses pipe() and the unix command "cut."

What I'm trying to do is to read certain fields in a .csv file..... my original .csv file has THOUSANDS of columns, so I just want to read certain ones...The unix command "cut" uses -d to specify that the comma "," is the delimiter in the file, and the -f to identify the field numbers. After the field numbers "cut" wants the file name.

Evidently, the unix command called by pipe must be within double quotes... and that is my problem...

In my actual problem, I've got THOUSANDS of csv files that contain some common variables and other variables that differ from file to file. I've specified the variables I want as a character vector called namz, and read the first line of each file using scan(). I'm then able to find out using match() the positions of the variables I want in each file. the code listed above gives only 1 of THOUSANDS of possible configurations of those desired variables.

In order to get this task done, for each file I get the position numbers in a variable called "col.pos" and then create the unix command using paste:

unix.cmd <- paste( "cut -d -f" , col.pos , " " , fn , sep = '' )

Then what I want to do is to create the R command that will read the file... something like:

cmd0 <- paste( "gnu.dat <- read.csv( pipe ( \"" , unix.cmd , "\" ) ) " , sep='')

Then, I'll use

eval( parse (text = cmd0) )

to read a file... and embed this in more code to read all of the THOUSANDS of files, each 1 at a time.

However, in the "cmd0" variable, I've used "\"" ... this does not work... it yields a character string that looks like...

> cmd0

[1] "gnu.dat <- read.csv( pipe ( \"cut -d -f9,2669,2676,2684,506,467,423,6,16,622,474,2,403,19,436,400,444,430,390,2671,437,428,2686,23,21,2246,2326,2288,2282,2272,2360,2318,2262,476,502,605,519,523,527,531,535 /home/philipsmith/Bubba/NIS/2007_claf/y2007.csv\" ) ) "
>

You'll see in that line the slash that precedes the double quote. the pipe() command is giving unix a unix command that has a slash in it: unix is expecting only a double quote and not a slash and gives and error.

So, those are all of the details. I'll be quite grateful if you can tell me how to paste a double quote (") in front of and at the end of a string so that unix will recognize the string as a valide unix command.

Very gratefully,
Phil Smith

Duluth, GA

(Ted Harding) wrote:

> Hi Philip,
> I think a bit more clarification may be useful yet!
>
> 1: How are you sending the command from R to Linux?
> 2: What is the command intended to be (as seen by Linux)?
>    And from what source (quasi-command line; script file; ...)
>    would it be read by Linux?
>
> For example, on my Linux machine, I just did (in a shell
> command line):
>
> ted_at_deb:~$ touch "New Mexico"
> ted_at_deb:~$ ls -l "New Mexico"
> -rw-r--r-- 1 ted ted 0 2008-07-03 10:58 New Mexico
>
> and then, in R, I did:
>
>   
>> system("ls -l \"New Mexico\"")
>>     
> -rw-r--r-- 1 ted ted 0 2008-07-03 10:58 New Mexico
>
> so I don't seem to have had the problem you describe below.
>
> On the other hand, back in Linux, if I do:
>
> ted_at_deb:~$ ls -l \"New Mexico\"
> ls: "New: No such file or directory
> ls: Mexico": No such file or directory
>
> which looks like the problem you describe -- so clearly the
> command did not get through in that form from R using the
> command system("ls -l \"New Mexico\"").
>
> Best wishes,
> Ted.
>
> On 03-Jul-08 09:18:14, Philip James Smith wrote:
>   
>> Thanks for your reply, Ted... I am very grateful for it.
>>
>> Using your notation, what I need is a character string Y that looks
>> like:
>>
>>  >
>>  > Y
>>  >[1] ""New Mexico""
>>
>> rather than
>>
>>  > Y
>>  >[1] "\"New Mexico\""
>>
>> i.e., Y must have the string 'New Mexico' surrounded by double quotes, 
>> rather than double quotes preceded by slashes.
>>
>> The reason why I need it that way is that I've over simplified my 
>> request and the character string is actually a unix command that needs 
>> to be surrounded by double quotes when embeded in the unix (linux) 
>> executes it. When unix sees that slash before the quotes, it gives an
>> error.
>>
>> I'd be grateful if you can provide a solution to this!!
>>
>> Thank you, Ted!
>>
>> Gratefully,
>> Phil Smith
>> Duluth, GA
>>
>>
>> (Ted Harding) wrote:
>>     
>>> On 03-Jul-08 01:25:55, Philip James Smith wrote:
>>>   
>>>       
>>>> Hi R Community:
>>>> I've got a character string that looks like: New Mexico
>>>>
>>>> How to I create the new character string that looks like: "New
>>>> Mexico" 
>>>> That is, it is the original string (New Mexico)  with double quotes 
>>>> infront and behind it?
>>>>
>>>> Thanks,
>>>> Phil Smith
>>>>     
>>>>         
>>> I tried the following. Is that the sort of thing you want to achieve?
>>>
>>>   X<-"New Mexico"
>>>   Y<-"\"New Mexico\""
>>>   X
>>> # [1] "New Mexico"
>>>   Y
>>> # [1] "\"New Mexico\""
>>>   plot((1:10),xlab=X,ylab=Y)
>>>
>>> Best wishes,
>>> Ted.
>>>
>>> --------------------------------------------------------------------
>>> E-Mail: (Ted Harding) <Ted.Harding_at_manchester.ac.uk>
>>> Fax-to-email: +44 (0)870 094 0861
>>> Date: 03-Jul-08                                       Time: 09:22:10
>>> ------------------------------ XFMail ------------------------------
>>>
>>>
>>>       
>> ______________________________________________
>> 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.
>>     
>
> --------------------------------------------------------------------
> E-Mail: (Ted Harding) <Ted.Harding_at_manchester.ac.uk>
> Fax-to-email: +44 (0)870 094 0861
> Date: 03-Jul-08                                       Time: 11:08:36
> ------------------------------ XFMail ------------------------------
>
>

______________________________________________
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. Received on Thu 03 Jul 2008 - 10:58:29 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 03 Jul 2008 - 12:31:52 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive