1. Research what does the function “sample” do
The sample function generates a random sample of the
elements of a vector.
It can be used to randomly shuffle a vector or to draw random elements
with or without replacement.
# Example:
sample(c("A", "T", "G", "C"), 10, replace = TRUE)
## [1] "C" "C" "G" "A" "T" "A" "A" "G" "C" "G"
2. Use the function “sample” to create a sequence of DNA of length
N
N <- 20
dna_seq <- sample(c("A", "T", "G", "C"), N, replace = TRUE)
print("Original DNA Sequence:")
## [1] "Original DNA Sequence:"
print(dna_seq)
## [1] "G" "A" "A" "C" "G" "A" "A" "C" "T" "T" "G" "G" "G" "C" "C" "T" "C" "A" "A"
## [20] "A"
3. Get the complementary sequence of the DNA sequence Generated
comp_seq <- c() # Empty vector to save the complementary sequence :)
for (base in dna_seq) {
if (base == "A") {
comp_seq <- c(comp_seq, "T")
} else if (base == "T") {
comp_seq <- c(comp_seq, "A")
} else if (base == "G") {
comp_seq <- c(comp_seq, "C")
} else if (base == "C") {
comp_seq <- c(comp_seq, "G")
}
}
print("Complementary DNA sequence:")
## [1] "Complementary DNA sequence:"
print(comp_seq)
## [1] "C" "T" "T" "G" "C" "T" "T" "G" "A" "A" "C" "C" "C" "G" "G" "A" "G" "T" "T"
## [20] "T"
5. using the function “sample” Generate 20 DNA sequences of lengths
between 10 and 20 and using loops, and using the length function, get
the lengths of each one of them.
set.seed(123)
seq_list <- list() # list to store DNA sequences
len_list <- numeric(20) # numerical list to store their lengths
for (i in 1:20) {
len <- sample(10:20, 1)
sequence <- sample(c("A", "T", "G", "C"), len, replace = TRUE)
seq_list[[i]] <- sequence
len_list[i] <- length(sequence)
}
print("Lengths of 20 Random DNA Sequences:")
## [1] "Lengths of 20 Random DNA Sequences:"
print(len_list)
## [1] 12 20 20 18 13 11 18 15 13 16 17 12 17 16 14 16 14 17 20 10
LS0tDQp0aXRsZTogIlFVSVoiDQphdXRob3I6ICJTaWx2ZXIgVGVhbSINCmRhdGU6ICIzLzQvMjAyNSINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQNCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0DQotLS0NCg0KDQoNCiMgMS4gUmVzZWFyY2ggd2hhdCBkb2VzIHRoZSBmdW5jdGlvbiAic2FtcGxlIiBkbw0KDQpUaGUgYHNhbXBsZWAgZnVuY3Rpb24gZ2VuZXJhdGVzIGEgcmFuZG9tIHNhbXBsZSBvZiB0aGUgZWxlbWVudHMgb2YgYSB2ZWN0b3IuICANCkl0IGNhbiBiZSB1c2VkIHRvIHJhbmRvbWx5IHNodWZmbGUgYSB2ZWN0b3Igb3IgdG8gZHJhdyByYW5kb20gZWxlbWVudHMgd2l0aCBvciB3aXRob3V0IHJlcGxhY2VtZW50Lg0KDQpgYGB7cn0NCiMgRXhhbXBsZToNCnNhbXBsZShjKCJBIiwgIlQiLCAiRyIsICJDIiksIDEwLCByZXBsYWNlID0gVFJVRSkNCmBgYA0KDQoNCg0KIyAyLiBVc2UgdGhlIGZ1bmN0aW9uICJzYW1wbGUiIHRvIGNyZWF0ZSBhIHNlcXVlbmNlIG9mIEROQSBvZiBsZW5ndGggTg0KDQpgYGB7cn0NCk4gPC0gMjANCmRuYV9zZXEgPC0gc2FtcGxlKGMoIkEiLCAiVCIsICJHIiwgIkMiKSwgTiwgcmVwbGFjZSA9IFRSVUUpDQpwcmludCgiT3JpZ2luYWwgRE5BIFNlcXVlbmNlOiIpDQpwcmludChkbmFfc2VxKQ0KYGBgDQoNCg0KDQojIDMuIEdldCB0aGUgY29tcGxlbWVudGFyeSBzZXF1ZW5jZSBvZiB0aGUgRE5BIHNlcXVlbmNlIEdlbmVyYXRlZA0KDQpgYGB7cn0NCmNvbXBfc2VxIDwtIGMoKSAgIyBFbXB0eSB2ZWN0b3IgdG8gc2F2ZSB0aGUgY29tcGxlbWVudGFyeSBzZXF1ZW5jZSA6KQ0KDQpmb3IgKGJhc2UgaW4gZG5hX3NlcSkgew0KICBpZiAoYmFzZSA9PSAiQSIpIHsNCiAgICBjb21wX3NlcSA8LSBjKGNvbXBfc2VxLCAiVCIpDQogIH0gZWxzZSBpZiAoYmFzZSA9PSAiVCIpIHsNCiAgICBjb21wX3NlcSA8LSBjKGNvbXBfc2VxLCAiQSIpDQogIH0gZWxzZSBpZiAoYmFzZSA9PSAiRyIpIHsNCiAgICBjb21wX3NlcSA8LSBjKGNvbXBfc2VxLCAiQyIpDQogIH0gZWxzZSBpZiAoYmFzZSA9PSAiQyIpIHsNCiAgICBjb21wX3NlcSA8LSBjKGNvbXBfc2VxLCAiRyIpDQogIH0NCn0NCg0KcHJpbnQoIkNvbXBsZW1lbnRhcnkgRE5BIHNlcXVlbmNlOiIpDQpwcmludChjb21wX3NlcSkNCmBgYA0KDQoNCg0KIyA0LiBUcmFuc2Zvcm0gdGhhdCBETkEgc2VxdWVuY2UgaW50byBSTkEgc2VxdWVuY2UgKFJlcGxhY2luZyBUIHdpdGggVSkNCg0KYGBge3J9DQpkbmFfdG9fcm5hIDwtIGZ1bmN0aW9uKGJhc2UpIHsNCiAgaWYgKGJhc2UgPT0gIlQiKSByZXR1cm4oIlUiKSBlbHNlIHJldHVybihiYXNlKQ0KfQ0KDQpybmFfc2VxIDwtIHNhcHBseShkbmFfc2VxLCBkbmFfdG9fcm5hKQ0KcHJpbnQoIlJOQSBTZXF1ZW5jZToiKQ0KcHJpbnQocm5hX3NlcSkNCmBgYA0KDQoNCg0KIyA1LiB1c2luZyB0aGUgZnVuY3Rpb24gInNhbXBsZSIgR2VuZXJhdGUgMjAgRE5BIHNlcXVlbmNlcyBvZiBsZW5ndGhzIGJldHdlZW4gMTAgYW5kIDIwIGFuZCB1c2luZyBsb29wcywgYW5kIHVzaW5nIHRoZSBsZW5ndGggZnVuY3Rpb24sIGdldCB0aGUgbGVuZ3RocyBvZiBlYWNoIG9uZSBvZiB0aGVtLg0KDQpgYGB7cn0NCnNldC5zZWVkKDEyMykNCnNlcV9saXN0IDwtIGxpc3QoKSAgIyBsaXN0IHRvIHN0b3JlIEROQSBzZXF1ZW5jZXMNCmxlbl9saXN0IDwtIG51bWVyaWMoMjApICAjIG51bWVyaWNhbCBsaXN0IHRvIHN0b3JlIHRoZWlyIGxlbmd0aHMNCg0KZm9yIChpIGluIDE6MjApIHsNCiAgbGVuIDwtIHNhbXBsZSgxMDoyMCwgMSkNCiAgc2VxdWVuY2UgPC0gc2FtcGxlKGMoIkEiLCAiVCIsICJHIiwgIkMiKSwgbGVuLCByZXBsYWNlID0gVFJVRSkNCiAgc2VxX2xpc3RbW2ldXSA8LSBzZXF1ZW5jZQ0KICBsZW5fbGlzdFtpXSA8LSBsZW5ndGgoc2VxdWVuY2UpDQp9DQoNCg0KcHJpbnQoIkxlbmd0aHMgb2YgMjAgUmFuZG9tIEROQSBTZXF1ZW5jZXM6IikNCnByaW50KGxlbl9saXN0KQ0KYGBgDQo=