[R] A More efficient method?

Benilton Carvalho bcarvalh at jhsph.edu
Wed Jul 4 17:12:39 CEST 2007


C1 <- rep(-1, length(Cat))
C1[Cat == "b"]] <- 1

b

On Jul 4, 2007, at 9:44 AM, Keith Alan Chamberlain wrote:

> Dear Rhelpers,
>
> Is there a faster way than below to set a vector based on values from
> another vector? I'd like to call a pre-existing function for this,  
> but one
> which can also handle an arbitrarily large number of categories.  
> Any ideas?
>
> Cat=c('a','a','a','b','b','b','a','a','b')	# Categorical variable
> C1=vector(length=length(Cat))	# New vector for numeric values
>
> # Cycle through each column and set C1 to corresponding value of Cat.
> for(i in 1:length(C1)){
> 	if(Cat[i]=='a') C1[i]=-1 else C1[i]=1
> }
>
> C1
> [1] -1 -1 -1  1  1  1 -1 -1  1
> Cat
> [1] "a" "a" "a" "b" "b" "b" "a" "a" "b"
>
> Sincerely,
> KeithC.
> Psych Undergrad, CU Boulder (US)
> RE McNair Scholar
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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