On 29-03-2013, at 20:01, Hermann Norpois <hnorp...@gmail.com> wrote:
> Hello, > > I would like to transform a character vector into a "binary" vector > ("keine" and " " become 0 and the rest 1). > >> dput (scm) > c("keine", " ", "keine", "Erstgradverw.", "Mutter", "Erstgradverw.", > "Erstgradverw.", "keine", " ", "Vater", "Erstgradverw.", "keine", > "keine", "keine", "keine", " ", "Erstgradverw.", "keine", "keine", > "Erstgradverw.") > > I tried: > > scoref <- sapply (scm, function (x) ifelse (x == "keine"|x==" ", 0, 1)) > > or > > scoref <- sapply (scm, function (x) ifelse (x == "keine"|x==" ", x <- 0, x > <- 1)) > > And this is the output: > >> scoref > keine keine Erstgradverw. Mutter > 0 0 0 1 1 > Erstgradverw. Erstgradverw. keine Vater > 1 1 0 0 1 > Erstgradverw. keine keine keine keine > 1 0 0 0 0 > Erstgradverw. keine keine Erstgradverw. > 0 1 0 0 1 > > How do I get rid off the text. Is there an alternative method? > First of all read the help page for sapply (and other apply's) in particular the part describing argument USE.NAMES. You don't need to use ifelse: a simple if/else will do. x is a scalar in your function and ifelse is overkill. So you also don't need to use |. So scoref <- sapply (scm, function (x) if (x == "keine" || x==" ") 0 else 1, USE.NAMES=FALSE) or scoref <- sapply (scm, function (x) 1-(x == "keine"||x==" "), USE.NAMES=FALSE) Berend ______________________________________________ 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.