Hi David,

Thanks for response, but my key question still remains unsolved. That is, how 
to add many vectors (L1,L2,L3....) to many list objects (a.list, 
b.list....) in a workspace? 


listObjects=ls(pattern=".list") #for example,  a.list, b.list...



for (object in listObjects){

#how to sign vectors L1,L2,..Ln to each object (a.list, b.list...)



}


Any suggestions/comments/ideas will be appreciated.

John




________________________________
 From: David Winsemius <dwinsem...@comcast.net>

Cc: "r-help@r-project.org" <r-help@r-project.org> 
Sent: Wednesday, August 1, 2012 7:21 PM
Subject: Re: [R] add vectors to multiple objects


On Aug 1, 2012, at 8:11 AM, John linux-user wrote:

> Hi everyone,
> 
> I try to add many vectors (L1,L2,L3....) to many list objects (a.list, 
> b.list....) in a workspace. Somethings like below, but it is not working. Any 
> suggestions will be appreciated. Best, John
> 
> lf=ls(pattern=".lst")
> 
>  for (x in listfiles) {
>     dat=read.delim(x,header=F)

Presumably that would fail since 'listfiles' has not been defined. did you mean 
'lf'? If you did,then wouldn't the second line overwrite all the early values 
of "dat" leaving only the last one?

Perhaps:
  datfils <- list()
  for (x in listfiles) {
    datfils[x] <- read.delim(x,header=F)


> 
>     for (i in 1: lf) {

And that would fail because 'lf' is a character vector, and it's not meaningful 
to specify such a range. Try instead:

     for (i in names(datfils[x]) ) {
#
# which will then iterate over the names of the files which are now also the 
names of the list elements

>     assign(i$add,as.numeric(dat[,3]))

But since 'i' is a length-1 character vector, the expression `i$add` will be 
meaningless. The "$" operator does not do function calling in R unless you do 
fancy things with environments, and you cannot "sub-assign" in that manner, at 
least not with the assign() function.

Try instead:

    assign(i, as.numeric(datfils[x][,3]))
    names(i)[length(i)] <- "add"

Or:
     i <- transform(i, add=datfils[x][,3] )



>   #or i$add=as.numeric(dat[,3]
>     names(i)[names(i)=="add"]=substr(x,1,5)

I'm not sure these would be doing the same thing. What was your goal here?

> 
>     print (i[1:3,])
>  }
> }


David Winsemius, MD
Alameda, CA, USA
        [[alternative HTML version deleted]]

______________________________________________
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.

Reply via email to