NGS-R-Bioconductor-1st

以下の練習問題(計算問題のみ)を解く。
http://cat.hackingisbelieving.org/lecture/tohoku-u/NGS-R-Bioconductor-1st.html

問題1

num <- 1:100
for (i in seq_along(num)) {
    if (i%%3 == 0 && i%%5 == 0) {
        print("FizzBuzz")
    } else if (i%%3 == 0) {
        print("Fizz")
    } else if (i%%5 == 0) {
        print("Buzz")
    } else {
        print(i)
    }
}
## [1] 1
## [1] 2
## [1] "Fizz"
## [1] 4
## [1] "Buzz"
## [1] "Fizz"
## [1] 7
## [1] 8
## [1] "Fizz"
## [1] "Buzz"
## [1] 11
## [1] "Fizz"
## [1] 13
## [1] 14
## [1] "FizzBuzz"
## [1] 16
## [1] 17
## [1] "Fizz"
## [1] 19
## [1] "Buzz"
## [1] "Fizz"
## [1] 22
## [1] 23
## [1] "Fizz"
## [1] "Buzz"
## [1] 26
## [1] "Fizz"
## [1] 28
## [1] 29
## [1] "FizzBuzz"
## [1] 31
## [1] 32
## [1] "Fizz"
## [1] 34
## [1] "Buzz"
## [1] "Fizz"
## [1] 37
## [1] 38
## [1] "Fizz"
## [1] "Buzz"
## [1] 41
## [1] "Fizz"
## [1] 43
## [1] 44
## [1] "FizzBuzz"
## [1] 46
## [1] 47
## [1] "Fizz"
## [1] 49
## [1] "Buzz"
## [1] "Fizz"
## [1] 52
## [1] 53
## [1] "Fizz"
## [1] "Buzz"
## [1] 56
## [1] "Fizz"
## [1] 58
## [1] 59
## [1] "FizzBuzz"
## [1] 61
## [1] 62
## [1] "Fizz"
## [1] 64
## [1] "Buzz"
## [1] "Fizz"
## [1] 67
## [1] 68
## [1] "Fizz"
## [1] "Buzz"
## [1] 71
## [1] "Fizz"
## [1] 73
## [1] 74
## [1] "FizzBuzz"
## [1] 76
## [1] 77
## [1] "Fizz"
## [1] 79
## [1] "Buzz"
## [1] "Fizz"
## [1] 82
## [1] 83
## [1] "Fizz"
## [1] "Buzz"
## [1] 86
## [1] "Fizz"
## [1] 88
## [1] 89
## [1] "FizzBuzz"
## [1] 91
## [1] 92
## [1] "Fizz"
## [1] 94
## [1] "Buzz"
## [1] "Fizz"
## [1] 97
## [1] 98
## [1] "Fizz"
## [1] "Buzz"

問題2

num <- 1:100
i <- num
num[i%%3 == 0] <- "Fizz"
num[i%%5 == 0] <- "Buzz"
num[i%%3 == 0 & i%%5 == 0] <- "FizzBuzz"
num
##   [1] "1"        "2"        "Fizz"     "4"        "Buzz"     "Fizz"    
##   [7] "7"        "8"        "Fizz"     "Buzz"     "11"       "Fizz"    
##  [13] "13"       "14"       "FizzBuzz" "16"       "17"       "Fizz"    
##  [19] "19"       "Buzz"     "Fizz"     "22"       "23"       "Fizz"    
##  [25] "Buzz"     "26"       "Fizz"     "28"       "29"       "FizzBuzz"
##  [31] "31"       "32"       "Fizz"     "34"       "Buzz"     "Fizz"    
##  [37] "37"       "38"       "Fizz"     "Buzz"     "41"       "Fizz"    
##  [43] "43"       "44"       "FizzBuzz" "46"       "47"       "Fizz"    
##  [49] "49"       "Buzz"     "Fizz"     "52"       "53"       "Fizz"    
##  [55] "Buzz"     "56"       "Fizz"     "58"       "59"       "FizzBuzz"
##  [61] "61"       "62"       "Fizz"     "64"       "Buzz"     "Fizz"    
##  [67] "67"       "68"       "Fizz"     "Buzz"     "71"       "Fizz"    
##  [73] "73"       "74"       "FizzBuzz" "76"       "77"       "Fizz"    
##  [79] "79"       "Buzz"     "Fizz"     "82"       "83"       "Fizz"    
##  [85] "Buzz"     "86"       "Fizz"     "88"       "89"       "FizzBuzz"
##  [91] "91"       "92"       "Fizz"     "94"       "Buzz"     "Fizz"    
##  [97] "97"       "98"       "Fizz"     "Buzz"    

問題3

for (i in 1:4) {
    print(sd(iris[, i]))
}
## [1] 0.8281
## [1] 0.4359
## [1] 1.765
## [1] 0.7622

問題4

for (i in 1:4) {
    print(mean(iris[, i]))
}
## [1] 5.843
## [1] 3.057
## [1] 3.758
## [1] 1.199

問題5

print(colMeans(iris[, 1:4]))
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
##        5.843        3.057        3.758        1.199 

問題6

print(sapply(iris[, 1:4], sd))
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
##       0.8281       0.4359       1.7653       0.7622 

問題7

library(BrainStars)
ids <- c("1439627_at", "1439631_at", "1439633_at")
my.esets <- getBrainStars(query = ids, type = "expression")
boxplot(exprs(my.esets))

plot of chunk problem7

発展問題-初級1
(省略)

発展問題-初級2

arr <- c("A", "T", "G", "C")
names(arr) <- c("T", "A", "C", "G")
arr[names(arr) == "A"]
##   A 
## "T" 

発展問題-初級3

num <- 1:100
sink("result_fizzbuzz.txt")
for (i in seq_along(num)) {
    if (i%%3 == 0 && i%%5 == 0) {
        cat("FizzBuzz\n")
    } else if (i%%3 == 0) {
        cat("Fizz\n")
    } else if (i%%5 == 0) {
        cat("Buzz\n")
    } else {
        cat(paste(i, "\n", sep = ""))
    }
}
## 1
## 2
## Fizz
## 4
## Buzz
## Fizz
## 7
## 8
## Fizz
## Buzz
## 11
## Fizz
## 13
## 14
## FizzBuzz
## 16
## 17
## Fizz
## 19
## Buzz
## Fizz
## 22
## 23
## Fizz
## Buzz
## 26
## Fizz
## 28
## 29
## FizzBuzz
## 31
## 32
## Fizz
## 34
## Buzz
## Fizz
## 37
## 38
## Fizz
## Buzz
## 41
## Fizz
## 43
## 44
## FizzBuzz
## 46
## 47
## Fizz
## 49
## Buzz
## Fizz
## 52
## 53
## Fizz
## Buzz
## 56
## Fizz
## 58
## 59
## FizzBuzz
## 61
## 62
## Fizz
## 64
## Buzz
## Fizz
## 67
## 68
## Fizz
## Buzz
## 71
## Fizz
## 73
## 74
## FizzBuzz
## 76
## 77
## Fizz
## 79
## Buzz
## Fizz
## 82
## 83
## Fizz
## Buzz
## 86
## Fizz
## 88
## 89
## FizzBuzz
## 91
## 92
## Fizz
## 94
## Buzz
## Fizz
## 97
## 98
## Fizz
## Buzz
sink()

発展問題-中級1/2
(省略)
発展問題-中級3
※Windowsなのでmulticoreパッケージがない。parallelパッケージで代用。

getFZBZ <- function(i) {
    if (i%%3 == 0 && i%%5 == 0) {
        res <- "FizzBuzz"
    } else if (i%%3 == 0) {
        res <- "Fizz"
    } else if (i%%5 == 0) {
        res <- "Buzz"
    } else {
        res <- i
    }
    return(res)
}

library(parallel)
cl <- makeCluster(rep("localhost", 4), type = "SOCK")
parSapply(cl, 1:100, getFZBZ)
##   [1] "1"        "2"        "Fizz"     "4"        "Buzz"     "Fizz"    
##   [7] "7"        "8"        "Fizz"     "Buzz"     "11"       "Fizz"    
##  [13] "13"       "14"       "FizzBuzz" "16"       "17"       "Fizz"    
##  [19] "19"       "Buzz"     "Fizz"     "22"       "23"       "Fizz"    
##  [25] "Buzz"     "26"       "Fizz"     "28"       "29"       "FizzBuzz"
##  [31] "31"       "32"       "Fizz"     "34"       "Buzz"     "Fizz"    
##  [37] "37"       "38"       "Fizz"     "Buzz"     "41"       "Fizz"    
##  [43] "43"       "44"       "FizzBuzz" "46"       "47"       "Fizz"    
##  [49] "49"       "Buzz"     "Fizz"     "52"       "53"       "Fizz"    
##  [55] "Buzz"     "56"       "Fizz"     "58"       "59"       "FizzBuzz"
##  [61] "61"       "62"       "Fizz"     "64"       "Buzz"     "Fizz"    
##  [67] "67"       "68"       "Fizz"     "Buzz"     "71"       "Fizz"    
##  [73] "73"       "74"       "FizzBuzz" "76"       "77"       "Fizz"    
##  [79] "79"       "Buzz"     "Fizz"     "82"       "83"       "Fizz"    
##  [85] "Buzz"     "86"       "Fizz"     "88"       "89"       "FizzBuzz"
##  [91] "91"       "92"       "Fizz"     "94"       "Buzz"     "Fizz"    
##  [97] "97"       "98"       "Fizz"     "Buzz"    
stopCluster(cl)