Re: [R] How to create a string containing '\/' to be used with SED?

2008-11-27 Thread David Winsemius

What do you mean by doesn't work and the \\ are removed?

 a - ..\\/path\\/file

 a
[1] ..\\/path\\/file

 cat(a)
..\/path\/file

--  
David Winsemius


On Nov 26, 2008, at 7:46 PM, ikarus wrote:



Thanks Sean!!

I followed you suggestion to use gsub() and it worked perfectly!
I still can't create a string with inside \/  (e.g., a -
..\\/path\\/file
doesn't work, R complains and the \\ are removed), but I don't care,
gsub() does the same job as sed and without using any system call.



seanpor wrote:


Good morning,

You do not need to quote a forward slash / in R, but you do need to  
quote
a backslash when you're inputting it... so to get a string which  
actually

contains blah\/blah... you need to use blah\\/blah

http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-does-backslash-behave-strangely-inside-strings_003f

Unless this is a very very big file you shouldn't need to go out to  
sed,
as gsub() should work adequately... and probably quicker and  
cleaner.  So

something along the lines of.. (UNTESTED!!! since I don't have a
reproduceable example)

tmp1 - readLines(configurationFile)
tmp1 - gsub(^instance .*, paste(instance = , data 
$instancePath, /,

data$newInstance, sep = ), tmp1)


I'm working on 50mb text files, and doing all sorts of  
manipulations and I
do it all inside R under windows XP...  reading a 50mb text file  
across
the 100mb network and doing a gsub() on most lines takes an elapsed  
16

seconds on this office desktop.

hth...

Regards,
Sean


ikarus wrote:


Hi guys,
I've been struggling to find a solution to the following issue:
I need to change strings in .ini files that are given in input to a
program whose output is processed by R. The strings to be changed  
looks

like:
instance = /home/TSPFiles/TSPLIB/berlin52.tsp

I normally use Sed for this kind of things. So, inside R I'd like to
write something like:

command - paste(sed -i 's/^instance .*/instance = ,
data$instancePath,
  data$newInstance, /' , configurationFile, sep  
= )

system(command)

This will overwrite the line starting with instance  using  
instance =

the_new_instance
In the example I gave, data$instancePath = /home/TSPFiles/TSPLIB/  
and

data$newInstance = berlin52.tsp

The problem is that I need to pass the above path string to sed in  
the

form:
\/home\/TSPFiles\/TSPLIB\/

However, I couldn't find a way to create such a string in R. I  
tried in

several different ways,
but it always complains saying that '\/' is an unrecognized escape!

Any suggestion?

Thanks!





--
View this message in context: 
http://www.nabble.com/How-to-create-a-string-containing-%27%5C-%27-to-be-used-with-SED--tp20694319p20711848.html
Sent from the R help mailing list archive at Nabble.com.

__
R-help@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.


__
R-help@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.


Re: [R] How to create a string containing '\/' to be used with SED?

2008-11-26 Thread seanpor

Good morning,

You do not need to quote a forward slash / in R, but you do need to quote a
backslash when you're inputting it... so to get a string which actually
contains blah\/blah... you need to use blah\\/blah

http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-does-backslash-behave-strangely-inside-strings_003f

Unless this is a very very big file you shouldn't need to go out to sed, as
gsub() should work adequately... and probably quicker and cleaner.  So
something along the lines of.. (UNTESTED!!! since I don't have a
reproduceable example)

tmp1 - readLines(configurationFile)
tmp1 - gsub(^instance .*, paste(instance = , data$instancePath, /,
data$newInstance, sep = ), tmp1)


I'm working on 50mb text files, and doing all sorts of manipulations and I
do it all inside R under windows XP...  reading a 50mb text file across the
100mb network and doing a gsub() on most lines takes an elapsed 16 seconds
on this office desktop.

hth...

Regards,
Sean


ikarus wrote:
 
 Hi guys,
 I've been struggling to find a solution to the following issue:
 I need to change strings in .ini files that are given in input to a
 program whose output is processed by R. The strings to be changed looks
 like: 
 instance = /home/TSPFiles/TSPLIB/berlin52.tsp 
 
 I normally use Sed for this kind of things. So, inside R I'd like to write
 something like:
 
  command - paste(sed -i 's/^instance .*/instance = , data$instancePath,
data$newInstance, /' , configurationFile, sep = )
  system(command)
 
 This will overwrite the line starting with instance  using instance =
 the_new_instance
 In the example I gave, data$instancePath = /home/TSPFiles/TSPLIB/ and 
 data$newInstance = berlin52.tsp
 
 The problem is that I need to pass the above path string to sed in the
 form:
 \/home\/TSPFiles\/TSPLIB\/ 
 
 However, I couldn't find a way to create such a string in R. I tried in
 several different ways,
 but it always complains saying that '\/' is an unrecognized escape!
  
 Any suggestion? 
 
 Thanks!
 

-- 
View this message in context: 
http://www.nabble.com/How-to-create-a-string-containing-%27%5C-%27-to-be-used-with-SED--tp20694319p20696613.html
Sent from the R help mailing list archive at Nabble.com.

__
R-help@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.


Re: [R] How to create a string containing '\/' to be used with SED?

2008-11-26 Thread ikarus

Thanks Sean!!

I followed you suggestion to use gsub() and it worked perfectly!
I still can't create a string with inside \/  (e.g., a -
..\\/path\\/file
doesn't work, R complains and the \\ are removed), but I don't care, 
gsub() does the same job as sed and without using any system call.



seanpor wrote:
 
 Good morning,
 
 You do not need to quote a forward slash / in R, but you do need to quote
 a backslash when you're inputting it... so to get a string which actually
 contains blah\/blah... you need to use blah\\/blah
 
 http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-does-backslash-behave-strangely-inside-strings_003f
 
 Unless this is a very very big file you shouldn't need to go out to sed,
 as gsub() should work adequately... and probably quicker and cleaner.  So
 something along the lines of.. (UNTESTED!!! since I don't have a
 reproduceable example)
 
 tmp1 - readLines(configurationFile)
 tmp1 - gsub(^instance .*, paste(instance = , data$instancePath, /,
 data$newInstance, sep = ), tmp1)
 
 
 I'm working on 50mb text files, and doing all sorts of manipulations and I
 do it all inside R under windows XP...  reading a 50mb text file across
 the 100mb network and doing a gsub() on most lines takes an elapsed 16
 seconds on this office desktop.
 
 hth...
 
 Regards,
 Sean
 
 
 ikarus wrote:
 
 Hi guys,
 I've been struggling to find a solution to the following issue:
 I need to change strings in .ini files that are given in input to a
 program whose output is processed by R. The strings to be changed looks
 like: 
 instance = /home/TSPFiles/TSPLIB/berlin52.tsp 
 
 I normally use Sed for this kind of things. So, inside R I'd like to
 write something like:
 
  command - paste(sed -i 's/^instance .*/instance = ,
 data$instancePath,
data$newInstance, /' , configurationFile, sep = )
  system(command)
 
 This will overwrite the line starting with instance  using instance =
 the_new_instance
 In the example I gave, data$instancePath = /home/TSPFiles/TSPLIB/ and 
 data$newInstance = berlin52.tsp
 
 The problem is that I need to pass the above path string to sed in the
 form:
 \/home\/TSPFiles\/TSPLIB\/ 
 
 However, I couldn't find a way to create such a string in R. I tried in
 several different ways,
 but it always complains saying that '\/' is an unrecognized escape!
  
 Any suggestion? 
 
 Thanks!
 
 

-- 
View this message in context: 
http://www.nabble.com/How-to-create-a-string-containing-%27%5C-%27-to-be-used-with-SED--tp20694319p20711848.html
Sent from the R help mailing list archive at Nabble.com.

__
R-help@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.


Re: [R] How to create a string containing '\/' to be used with SED?

2008-11-26 Thread seanpor

What is the problem error message?  I can say

 fred - blah1\\/blah2\\/blah3

and then the string looks like...

 cat(#, fred, '#\n', sep='')
#blah1\/blah2\/blah3#

If you just ask R to print it then it looks like...
 fred
[1] blah1\\/blah2\\/blah3


when you're playing with strings and regular expressions, it's vital to
understand the backslash quoting mechanism...

Best regards,
Sean


ikarus wrote:
 
 I still can't create a string with inside \/  (e.g., a -
 ..\\/path\\/file
 doesn't work, R complains and the \\ are removed), ... snip
 
-- 
View this message in context: 
http://www.nabble.com/How-to-create-a-string-containing-%27%5C-%27-to-be-used-with-SED--tp20694319p20713699.html
Sent from the R help mailing list archive at Nabble.com.

__
R-help@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.


[R] How to create a string containing '\/' to be used with SED?

2008-11-25 Thread ikarus

Hi guys,
I've been struggling to find a solution to the following issue:
I need to change strings in .ini files that are given in input to a program
whose output is processed by R. The strings to be changed looks like: 
instance = /home/TSPFiles/TSPLIB/berlin52.tsp 

I normally use Sed for this kind of things. So, inside R I'd like to write
something like:

 command - paste(sed -i 's/^instance .*/instance = , data$instancePath,
   data$newInstance, /' , configurationFile, sep = )
 system(command)

This will overwrite the line starting with instance  using instance =
the_new_instance
In the example I gave, data$instancePath = /home/TSPFiles/TSPLIB/ and 
data$newInstance = berlin52.tsp

The problem is that I need to pass the above path string to sed in the form:
\/home\/TSPFiles\/TSPLIB\/ 

However, I couldn't find a way to create such a string in R. I tried in
several different ways,
but it always complains saying that '\/' is an unrecognized escape!
 
Any suggestion? 

Thanks!
-- 
View this message in context: 
http://www.nabble.com/How-to-create-a-string-containing-%27%5C-%27-to-be-used-with-SED--tp20694319p20694319.html
Sent from the R help mailing list archive at Nabble.com.

__
R-help@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.