[R] Assigning colnames in loop
Sundar Dorai-Raj
sdorairaj at gmail.com
Mon Feb 2 23:44:23 CET 2009
It's always best to do this with list operations (e.g. lapply) rather
than a loop:
DF1 <- split(DF, DF$male)
DF2 <- lapply(DF1, function(x) {
x2 <- t(as.matrix(x[3:5], dimnames = list(levels(x$age), NULL)))
as.data.frame(x2)
})
Then DF2[["0"]] and DF2[["1"]] are the data.frames you want.
HTH,
--sundar
On Mon, Feb 2, 2009 at 2:30 PM, Peter Jepsen <PJ at dce.au.dk> wrote:
> Dear R-listers,
>
> I am trying to assign colnames to a data frame within a loop, but I keep
> getting a "target of assignment expands to non-language object"-error. I
> need to split up a large dataset into about 20 smaller ones, and I would
> like to assign colnames within the loop, so I won't have to type the
> same thing 20 times over.
>
> I have concocted this really goofy example which constructs two
> datasets:
>
> -----
> male <- rep(0:1, each=5)
> age <- factor(c(10:14,10:14))
> DF <- data.frame(male, age, res1=rnorm(10), res2=rnorm(10),
> res3=rnorm(10))
>
> for(n in 0:1) {
> assign(paste("test",n, sep="."), as.data.frame(t(subset(DF,
> male==n, select=c(res1, res2, res3)))))
> colnames(get(paste("test",n, sep="."))) <-
> paste("age",levels(age), "m", n, sep="") # This line gives an error.
> assign(colnames(paste("test",n, sep="."))) <-
> paste("age",levels(age), "m", n, sep="") # This line gives the same
> error.
> }
> -------
> The following command assigns the right colnames to the 'test.0' data
> frame, but I want this line inside the loop so I won't have to type it
> 20 times over.
> colnames(test.0) <- paste("age",levels(age), "m", 0, sep="")
>
>
> Thank you in advance for any assistance.
> Peter.
>
>> sessionInfo()
> R version 2.8.1 (2008-12-22)
> i386-pc-mingw32
>
> locale:
> LC_COLLATE=Danish_Denmark.1252;LC_CTYPE=Danish_Denmark.1252;LC_MONETARY=
> Danish_Denmark.1252;LC_NUMERIC=C;LC_TIME=Danish_Denmark.1252
>
> attached base packages:
> [1] tools stats graphics grDevices utils datasets methods
> base
>
> other attached packages:
> [1] epiR_0.9-14 maptools_0.7-18 sp_0.9-29 foreign_0.8-30
> chron_2.3-28
>
> loaded via a namespace (and not attached):
> [1] grid_2.8.1 lattice_0.17-20
>
> ______________________________________________
> R-help at 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.
>
More information about the R-help
mailing list