Skip to content
Back to formatted view

Raw Message

Message-ID: <430DB4C3.1030907@pdf.com>
Date: 2005-08-25T12:08:35Z
From: Sundar Dorai-Raj
Subject: Converting characters to numbers in data frames
In-Reply-To: <430DAF6A.60301@helsinki.fi>

Anon. wrote:
> I'm sure I'm missing something obvious here, but I can't find the 
> solution (including in the FAQ etc.).
> 
> I have a vector of names of variables like this: NRes.x.y. where x and y 
> are numbers.  I want to extract these numbers as numbers to use 
> elsewhere.  I can extract the numbers as a list of characters using 
> strsplit(), and convert that to a data frame, e.g.:
> 
> NAMES=c("NRes.1.2.", "NRes.1.3.", "NRes.1.4.", "NRes.1.5.", "NRes.1.6.")
> NUMBERS=strsplit(gsub("NRes.","", NAMES, perl =T), '.', fixed = TRUE)
> NUMBERS.df=t(data.frame(NUMBERS))
> 
> But I now want to convert the characters to be numeric.  Using 
> as.numeric(NUMBERS.df) converts them, but to a vector.  How can I 
> convert and keep as a data frame?  I could use this:
> 
> matrix(as.numeric(NUMBERS.df), ncol=dim(NUMBERS.df)[2])
> 
> but I seem to be jumping through far too many hoops: there must be an 
> easier way.  An suggestions?
> 
> Bob
> 


How about this?

NUMBERS <- lapply(strsplit(NAMES, "\\."), "[", -1)
as.data.frame(do.call("rbind", lapply(NUMBERS, as.numeric)))

--sundar