[R] Sampling letters

From: Doran, Harold <HDoran_at_air.org>
Date: Tue, 04 Mar 2008 10:33:55 -0500


I have a binary matrix of size N x 300. I then create the following:

> set.seed(1234)
> (key_file <- sample(letters[1:4], 300, replace=TRUE))

  [1] "a" "c" "c" "c" "d" "c" "a" "a" "c" "c" "c" "c" "b" "d" "b" "d"

"b" "b" "a" "a" "b" "b" "a"
[24] "a" "a" "d" "c" "d" "d" "a" "b" "b" "b" "c" "a" "d" "a" "b" "d"
"d" "c" "c" "b" "c" "b" "c"
[47] "c" "b" "a" "d" "a" "b" "c" "c" "a" "c" "b" "d" "a" "d" "d" "a"
"b" "a" "a" "c" "b" "c" "a"
[70] "c" "a" "d" "a" "d" "a" "c" "b" "a" "b" "c" "d" "b" "a" "c" "a"
"d" "b" "b" "a" "d" "a" "d"
[93] "a" "a" "a" "c" "b" "a" "b" "c" "a" "c" "b" "a" "a" "b" "a" "a"
"b" "a" "c" "a" "d" "a" "a"
[116] "d" "d" "b" "a" "d" "c" "d" "d" "d" "b" "b" "b" "c" "b" "b" "d"
"c" "a" "b" "d" "b" "d" "c"
[139] "c" "d" "c" "d" "b" "b" "b" "c" "c" "c" "d" "c" "b" "a" "a" "d"
"a" "d" "c" "d" "b" "c" "b"
[162] "c" "b" "a" "a" "c" "b" "a" "d" "b" "d" "c" "c" "b" "b" "d" "b"
"c" "a" "b" "b" "b" "c" "a"
[185] "d" "a" "d" "c" "b" "c" "c" "d" "a" "d" "d" "d" "d" "c" "d" "c"
"c" "c" "b" "d" "c" "c" "b"
[208] "b" "a" "d" "c" "b" "a" "d" "c" "d" "c" "c" "b" "d" "b" "a" "b"
"b" "a" "b" "d" "b" "c" "b"
[231] "d" "c" "a" "d" "c" "a" "c" "b" "b" "d" "b" "a" "a" "c" "d" "b"
"d" "c" "d" "d" "c" "c" "b"
[254] "b" "a" "c" "b" "a" "c" "c" "d" "a" "c" "b" "a" "a" "c" "a" "a"
"c" "b" "d" "b" "d" "a" "c"
[277] "d" "c" "b" "b" "b" "b" "d" "d" "c" "b" "b" "b" "c" "d" "c" "b"

"d" "a" "c" "d" "c" "a" "c"

[300] "b"

I now replace all 1's in column 1 with key_file[1], I replace all 1's in column 2 with key_file[2] and so on through column 300. This part is simple.

Now, I want to replace the 0's in column 1 with either b,c, or d, but not with an a since that was used to replace the 1's. For column 2 I want to replace all 0's with either a,b, or d but not with c since that was used to replace the 1's.

However, I do not want all 0's in column 1 to be the same letter. That is, I would not want them all to be replaced with a 'b'. Rather, I want to randomly recode the 0's as either b,c, or d. So, some 0's will be recoded as b, some as c, and some as d.

If I were replacing the zeros with the same letter, this would be a simple ifelse command. But, because I want randomness I'm not sure how I can do this other than a costly loop than goes through the data matrix cell-by-cell and does some replacement. That would be fine, but very time consuming.

Does anyone have thoughts on how else I could tackle this?

Harold



R-help_at_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. Received on Tue 04 Mar 2008 - 15:36:17 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 04 Mar 2008 - 16:30:20 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive