Hello, I am very new to R and data analysis in general. I am trying to generate values to append to my data frame using conditional statements. I am playing with this simple example:
a <- c(1:4) b <- c("meep", "foo", "meep", "foo") d <- cbind(a, b) now what I want to do is , each time there is a "meep" in column 2 of d, print "oops", else print "yay". So I wrote: for(i in seq(along=d[,2])) {if (d[i]=="meep") { print("oops")} else { print("yay")} } Result: [1] "yay" [1] "yay" [1] "yay" [1] "yay" What am I doing wrong? Furthermore, I would like to append the results to d: d$c <- for(i in seq(along=d[,2])) {if (d[i]=="meep") { print("oops")} else { print("yay")} } this doesn't really work, it just turns the whole thing into a list. . Although if: c <- NA d <- cbind(a, b, c) and I coerce d into a data.frame, run: d$c <- for(i in seq(along=d[,2])) {if (d[i]=="meep") { print("oops")} else { print("yay")} } some glint of hope appears: [1] "yay" [1] "oops" but then...... Error in if (d[i] == "meep") { : missing value where TRUE/FALSE needed In addition: Warning messages: 1: In if (d[i] == "meep") { : the condition has length > 1 and only the first element will be used 2: In if (d[i] == "meep") { : the condition has length > 1 and only the first element will be used 3: In if (d[i] == "meep") { : the condition has length > 1 and only the first element will be used To complicate things a little bit more in my real data there are 16 levels, so for each level I need to "print" a different value (that would be 16 nested ifs, and I am sure there must be a more sensible way to do this!) Thanks in advance, Laura ______________________________________________ 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.