[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