[R] How do I paste double quotes arround a character string?
Philip James Smith
philipsmith at alumni.albany.edu
Thu Jul 3 12:35:50 CEST 2008
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 ------------------------------
>
>
More information about the R-help
mailing list