Maybe you can time this and see if this is any better: "%$%" = function(data,field) data[, pmatch(field,dimnames(data)[[2L]])]
# test mat <- matrix(1:24, 6, dimnames = list(NULL, letters[1:4])) mat%$%"c" On Jan 4, 2008 2:29 PM, Dan Dube <[EMAIL PROTECTED]> wrote: > hello, > > i have been trying to convert my data frames to matrices in the hopes of > speeding up some of my more complicated scripts. > > to assist with this, i am trying to create a "matrix column operator" > like $: > "%$%" = function(data,field) { > as.numeric(data[,grep(field,unlist(dimnames(data)[2]))]) > } > > the idea here is that you can use a matrix like a dataframe: > matrix%$%"fieldname" > > i am getting this matrix by converting a dataframe: > df = read.csv("data.csv") > matrix = data.matrix(df,rownames.force=FALSE) > > this sets rownames to "NULL", but there is still an entry at > dimnames(matrix)[1], and so i have to access the actual column names as > dimnames(matrix)[2]. if there were only one dimension of dimnames, this > operator works quickly, but when i have to access [2], it is super slow. > > am i way off base trying to do this? i'd like to have the ability to > talk about the columns by name, since they may not always be in the same > place. maybe i am making it more complicated than necessary? > > thanks! > > dan > > ______________________________________________ > 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.