ottorino
2012-Apr-10 13:44 UTC
[R] substitution of the ASCII character "squared" AKA "^2" AKA (alt+0178) with a tractable one
Deae R helpers, the problem I'm facing today is related to the manipulation of a string. The string is coming from a a porosimeter, whose control is under a complicate set-up of two computers One (running on DOS) is controlling directly the hardware, while the other (running on win XP) which process the data is connected to the first one via serial. I get the data from this last computer. The string I'm trying to process comes from a command like this> myString <- readLines(path.to.file, 150)[78]and looks like this> [1] "(MPa)\t(mm3)\t(nM)\t(mm3/g)\t(mm3/g)\t(%)\t(m\xb2/g)\t"where "\xb2" is the alt+0178 ASCII character My problem is to find out the regexp to substitute the ASCII 0178 with a simple "2" No problem with, say gsub('\t',';', myString) [1] "(MPa);(mm3);(nM);(mm3/g);(mm3/g);(%);(m\U3e32623c/g);" which incidentally change the "\xb2" to "\U3e32623c", but I cannot find a way to search and substitute for "\xb2". I've tried many combinations such as gsub('\xb', ... gsub('\\xb', ... gsub('\\xb2', ... gsub('\xb2', ... etc without success. This is surely due to my ignorance of regexp, but I suspect something arduous here (at least for me !!). Further than this, consider that I'm running a Linux box and that I have to transfer the code to a mac....... I've tried also to see if it possible to change that string at the source, but it is possible only on manual basis, quite inconvenient if you have to process many files. Any help ? I'm quite discouraged ... -- Ottorino-Luca Pantani, Universit? di Firenze Dip.to di Scienze delle Produzioni Vegetali, del Suolo e dell'Ambiente Forestale (DiPSA) P.zle Cascine 28 50144 Firenze Italia Ubuntu 10.04 -- GNOME 2.30.2 GNU Emacs 23.1.50.1 (x86_64-pc-linux-gnu, GTK+ Version 2.18.0) ESS version 12.04 -- R 2.15.0
David Winsemius
2012-Apr-10 13:54 UTC
[R] substitution of the ASCII character "squared" AKA "^2" AKA (alt+0178) with a tractable one
On Apr 10, 2012, at 9:44 AM, ottorino wrote:> Deae R helpers, > the problem I'm facing today is related to the manipulation of a > string. > > The string is coming from a a porosimeter, whose control is under a > complicate set-up of two computers > > One (running on DOS) is controlling directly the hardware, while the > other (running on win XP) which process the data is connected to the > first one via serial. I get the data from this last computer. > > The string I'm trying to process comes from a command like this > >> myString <- readLines(path.to.file, 150)[78] > > and looks like this > >> [1] "(MPa)\t(mm3)\t(nM)\t(mm3/g)\t(mm3/g)\t(%)\t(m\xb2/g)\t" > > where "\xb2" is the alt+0178 ASCII character >Perhaps, modulo encoding issues I'm not expert in, one more backslash than you tried: > gsub( "\\\xb2" , "2", "(MPa)\t(mm3)\t(nM)\t(mm3/g)\t(mm3/g)\t(%)\t(m \xb2/g)\t") [1] "(MPa)\t(mm3)\t(nM)\t(mm3/g)\t(mm3/g)\t(%)\t(m2/g)\t"> My problem is to find out the regexp to substitute the ASCII 0178 > with a > simple "2" > > No problem with, say > > gsub('\t',';', myString) > > [1] "(MPa);(mm3);(nM);(mm3/g);(mm3/g);(%);(m\U3e32623c/g);" > > which incidentally change the "\xb2" to "\U3e32623c", > > but I cannot find a way to search and substitute for "\xb2". > > I've tried many combinations such as > gsub('\xb', ... > gsub('\\xb', ... > gsub('\\xb2', ... > gsub('\xb2', ... etc > > without success. > > This is surely due to my ignorance of regexp, but I suspect something > arduous here (at least for me !!). > > Further than this, consider that I'm running a Linux box and that I > have > to transfer the code to a mac....... > > I've tried also to see if it possible to change that string at the > source, but it is possible only on manual basis, quite inconvenient if > you have to process many files. > > Any help ? I'm quite discouraged ... > > > -- > Ottorino-Luca Pantani, Universit? di Firenze > Dip.to di Scienze delle Produzioni Vegetali, > del Suolo e dell'Ambiente Forestale (DiPSA) > P.zle Cascine 28 50144 Firenze Italia > Ubuntu 10.04 -- GNOME 2.30.2 > GNU Emacs 23.1.50.1 (x86_64-pc-linux-gnu, GTK+ Version > 2.18.0) > ESS version 12.04 -- R 2.15.0 > > ______________________________________________ > 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.David Winsemius, MD West Hartford, CT
Rui Barradas
2012-Apr-10 14:25 UTC
[R] substitution of the ASCII character "squared" AKA "^2" AKA (alt+0178) with a tractable one
Hello, To use the octal code works with me. # I've created a file with that byte only. x <- readLines("ascii0178") y <- c(as.character(1:4), x, as.character(6:10)) y grep("\262", y) # should return 5 gsub("\262", "HERE", y) Hope this helps, Rui Barradas -- View this message in context: http://r.789695.n4.nabble.com/substitution-of-the-ASCII-character-squared-AKA-2-AKA-alt-0178-with-a-tractable-one-tp4545664p4545777.html Sent from the R help mailing list archive at Nabble.com.