> First of all, thanks for all the replies!! > What you have written helps, but is not entirely the answer to my problem. > > What I'd have is the creation of new data.frames each of one named with > the ID of the original dataframe and with all the columns.
What was suggested gave you a list of data.frames, each named with the ID . You can use the syntax list$name or list[["name"]] to refer to a data.frame. R> splitData <- split(allData, allData$ID) R> splitData$x1 ID value1 value2 1 x1 10 12 2 x1 12 22 3 x1 11 9 R> splitData$x2 ID value1 value2 4 x2 15 10 You seem to want a function that creates a bunch of data.frames in the current environment instead of one that creates them in a list created to hold them. This is not necessary and actually gets in the way most of the time. If you want to refer to 'x1' instead of 'splitData$x1' you can use 'with', as in R> with(splitData, mean(x1$value2) - mean(x2$value2)) [1] 4.333333 instead of the slightly wordier R> mean(splitData$x1$value2) - mean(splitData$x2$value2) [1] 4.333333 If you want to process each sub-data.frame (these are data.frame, not matrices) you can use lapply() or sapply() or vapply() on the list R> dm <- sapply(splitData, function(x)mean(x$value2) - mean(x$value1)) R> dm x1 x2 x3 3.333333 -5.000000 -2.500000 R> dm["x2"] x2 -5 If you put all those names into the current environment you stand the chance of clobbering some other dataset whose name matched one of the entries in allData$ID. Also you would have to use some rather ugly code involving get() and assign() to manipulate the objects. Learn to love lists. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf > Of matteo > Sent: Monday, June 24, 2013 11:32 AM > To: Bert Gunter > Cc: r-help@r-project.org > Subject: Re: [R] extracting submatrix from a bigger one > > First of all, thanks for all the replies!! > What you have written helps, but is not entirely the answer to my problem. > > What I'd have is the creation of new data.frames each of one named with > the ID of the original dataframe and with all the columns. > > For example, in the original dataframe one column (ID) has 5 different > elements: > > ID value1 value2 > x1 10 12 > x1 12 22 > x1 11 9 > x2 15 10 > x3 11 11 > x3 13 8 > > I need a command ables to split the dataframe in other smallest and > separated dataframes, so that they look like > > x1 is > ID value1 value2 > x1 10 12 > x1 12 22 > x1 11 9 > > x2 is > ID value1 value2 > x2 15 10 > > and x3 is > ID value1 value2 > x1 10 12 > x3 11 11 > x3 13 8 > > > Sorry if I'm not able to explain it better and as I said I'm very new to > R..... > > Thanks > > Matteo > > ______________________________________________ > 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. ______________________________________________ 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.