Ah! I forgot to mention that it is possible to call awk from R:

a <- system("awk -F'=' '/\\[/{a=$1;next}{print $1,$2,a}' example.ini",
intern=T)
z <- textConnection(a)
read.table(z)


Christophe


On 6/14/07, Christophe Pallier <christophe@pallier.org> wrote:
>
> On 6/14/07, Gabor Grothendieck <ggrothendieck@gmail.com> wrote:
> >
> > Here is yet another solution.  This is the simplest so far.
> > Lines.raw is as before and the output is a 3 column character
> > matrix.
>
> section <- ""
> > f <- function(x) {
> >         if (length(x) == 1) section <<- gsub("[\\[\\]]", "", x)
> >         if (length(x) <= 1) return()
> >         return(c(x, section))
> > }
> > # Lines <- readLines("myfile.ini")
> > Lines <- readLines(textConnection(Lines.raw))
> > do.call("rbind", lapply(strsplit(Lines, "="), f))
>
>
>
> The corresponding awk code fits in one line '/\[/{a=$1;next}{print
> $1,$2,a}'.
>
> With the example.ini:
>
> $ awk -F"=" '/\[/{a=$1;next}{print $1,$2,a}' example.ini
> var1 value1 [Section1]
> var2 value2 [Section1]
> A value3 [Section2]
> B value4 [Section2]
>
> The output can then be imported in R with read.table.
>
> I know, I am not playing by the rules here... :)
> But with programming languages, like with human languages, it pays to be
> bi or tri-lingual (or polyglot, if one can).
>
> I also realise that under Windows, it means using the command line,
> something that  not so many people are comfortable with nowadays.
>
> One reason people insist on using only one language to do everything may
> be due to the awkwardness and limitations of the default scripting language
> under Windows (DOS). Having everything done inside one single R script can
> seem simpler. But a divide-and-conquer approach, with a few small scripts,
> can actually work better in some complex cases.
>
> I tend to do as much as possible in R but for all serious data analysis
> tasks, I use Makefile to "glue" the various stages of processing. Data
> preprocessing stages (performed with R or other tools) create files that are
> then processed with R. One advantage is that preprocessing is performed only
> when raw input data change; but the most important, is that when I come back
> years later, I can follow the exact flow of transformations.
> Again, "make"  (like awk  or R) is not without limits and idiosyncrasies.
> If someone has a simpler solution, I am interested to hear about it.
>
> Christophe
>
>
>
>
>
> --
> Christophe Pallier ( http://www.pallier.org)
>



-- 
Christophe Pallier (http://www.pallier.org)

	[[alternative HTML version deleted]]

