> fakedata <- data.frame(A=c(0,0,0), X2=c(2,2,2), X1=c(1,1,1), X3=c(3,3,3)) > fakedata A X2 X1 X3 1 0 2 1 3 2 0 2 1 3 3 0 2 1 3 > pos <- colnames(fakedata)[2:ncol(fakedata)] > pos <- c(1, 1+as.numeric(gsub("X", "", pos))) > fakedata[, pos] A X1 X2 X3 1 0 1 2 3 2 0 1 2 3 3 0 1 2 3 >
Sarah 2012/2/17 Joel Fürstenberg-Hägg <jo...@life.ku.dk>: > Dear all, > > I have a data frame in which the columns need to be ordered. The first column > X is at the right position, but the remaining columns X1-Xn should be ordered > like this: X1, X2, X3 etc instead of like below. > >> colnames(pos1) > [1] "X" "X1" "X10" "X11" "X12" "X13" "X14" "X15" "X16" "X17" "X18" "X19" > "X2" "X20" "X3" "X4" "X5" "X6" "X7" "X8" "X9" > >> pos1[1:5,1:5] > X X1 X10 X11 X12 > 1 100.5 7949.469 18509.064 8484.969 17401.056 > 2 101.5 3080.058 7794.691 3211.323 8211.058 > 3 102.5 1854.347 4347.571 1783.846 4827.338 > 4 103.5 2064.441 8421.746 2012.536 8363.785 > 5 104.5 9650.402 26637.926 10730.647 27053.421 > > I am trying to first change the first column name to something without an X > and save as a vector. I would then remove the X from each position use the > vector for renaming the columns. Then the column 2-n could be ordered, I > hope... > > colnames(pos)[1] <- "Mass" > columnNames <- colnames(pos) > > Does any of you have an idea how to do this, or perhaps there is a smoother > solution? > Would it be easier to solve it if the contents of the first column were > extracted and used as row names instead? > > Best regards, > > Joel > -- Sarah Goslee http://www.functionaldiversity.org ______________________________________________ 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.