[R] importing a list
Marc Schwartz (via MN)
mschwartz at mn.rr.com
Wed May 10 20:19:56 CEST 2006
A search for the list2ascii() function, led me to this post by Mike
Prager:
http://finzi.psych.upenn.edu/R/Rhelp02a/archive/66335.html
in which Mike specifically notes:
"To write it to a file that can be read by R, I would suggest using
"dput" instead."
Thus, instead of using list2ascii() on your list object, use:
sink("YourTextFile")
dput(YourListObject)
sink()
You can then re-read the text file back into R using:
source("YourTextFile")
provided of course that you don't compromise the integrity of the file
content when you edit the model formulae.
See ?sink (or ?capture.output) and ?dput for more help here.
However, I wholeheartedly support Bert's recommendation that you use
save()/load()/update(), since these functions enable you to work with R
objects directly in their native format _within R_, as opposed to
messing around with textual representations in an external editor where
you risk introducing errors through typos.
R is an incredibly powerful environment, when you work within it to take
advantage of its power, rather then trying to work around it to obviate
it.
HTH,
Marc Schwartz
On Wed, 2006-05-10 at 13:05 -0400, grazia at stat.columbia.edu wrote:
> Robert,
> thanks first of all.
> Actually, the txt file I want to read as a list is like that:
>
>
> $y
> $y$mod.1
> [1] "impute.1.y=glm(I(y>0)~x+ z+ w,family=binomial(link =logit),data=
> data)"
>
> $y$mod.2
> [1] "impute.2.y=lm(I(log (y))~x+ z+ w,subset=y>0)"
>
> $x
> [1] "impute.x=lm(x~y+ z+ w, data= data)"
>
> $z
> [1] "impute.z=lm(z~y+ x+ w,data= data)"
>
> that is a list of 4 elements with the first element
> a list as well.
>
> To save the file I'm using this function:
>
> list2ascii <- function(x,
> file=paste(deparse(substitute(x)),".txt",sep="")) {
>
> tmp.wid = getOption("width")
> options(width=10000)
> sink(file)
> print(x)
> sink()
> options(width=tmp.wid)
> return(invisible(NULL))
> }
>
> So, I should read it using
> read.fwf("models.txt", width=getOption("width"))
>
> The problem is that I'm not getting back a list!
> Probably I have to play with write.table?!!
> thanks,
> grazia
>
>
>
>
> On Wed, 10 May 2006, Robert Citek wrote:
>
> > Hello Grazia,
> >
> > On May 10, 2006, at 10:23 AM, grazia at stat.columbia.edu wrote:
> >> I'm trying to automate some regression operations in R leaving the
> >> possibility to modify the predictors in the regression.
> >>
> >> For example, I have saved in a list the results and then exported as a txt
> >> file, in which we can modify the predictors, putting for example
> >> lm(y~x^2) instead of having lm(y~x) as in the original model.
> >>
> >> Now, I need to import in R the txt file as a list to evaluate the model.
> >> Is that possible?
> >>
> >> I played around with source() and file() but can't figure it out.
> >
> > What OS are you using? When you say the list is in a text file, how is the
> > text file structured, e.g. CSV, TSV, fixed-width, other?
> >
> > Here's an example of creating, writing, and reading a data.frame:
> >
> > d <- data.frame(cbind(x=1, y=1:10))
> > write.table(d, file="r-data.txt", sep="\t", na="", quote=FALSE, row.names =
> > FALSE)
> > d.new <- read.delim("r-data.txt")
> >
More information about the R-help
mailing list