1. R을 이용하여 다음 계산식의 코드를 작성하고 답을 구하시오.

25+99
## [1] 124
456-123
## [1] 333
2*(3+4)
## [1] 14
(3+5*6)/7
## [1] 4.714286
(7-4)*3
## [1] 9
210+35
## [1] 245
1256%%7
## [1] 3
184%%5
## [1] 4
1976/24
## [1] 82.33333
16*25+186*5-67*22
## [1] -144

2. R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.

변수 a와 b에 각각 4와 5를 저장한 후, a+b의 결과를 c에 저장하고 c의 내용을 출력한다.

a <- 4
b <- 5
c <- a+b
c
## [1] 9

3. R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.

변수 pi에 3.14를 저장한 후, pi를 이용하여 반지름이 10, 12, 15인 원의 면적을 각각 구한다.

pi <- 3.14
10*10*pi ## pi*10^2
## [1] 314
12*12*pi
## [1] 452.16
15*15*pi
## [1] 706.5

4. R을 이용하여 다음의 내용을 코드로 작성하고 답을 구하시오.

y=2x2+5x+10에 대해 x가 각각 6, 8, 10일 때 y의 값을 각각 구한다.

x <- 6
y <-  2*x*x+5*x+10 # y <- 2*(x^2)+5*x+10
y  # x가 6일때 y값
## [1] 112
x <- 8
y <-  2*x*x+5*x+10
y  # x가 8일때 y값
## [1] 178
x <- 10 
y <-  2*x*x+5*x+10
y  # x가 10일때 y값
## [1] 260

5. 다음의 R 코드의 문제점을 지적하고 어떻게 해결해야 하는지 설명하시오.

val.a <- 10

sum.ab <- val.a + val.b

# val.b 변수에 값이 없음으로 값을 할당한다 (에러: 객체 'val.b'를 찾을 수 없습니다)
val.a <- 10
val.b <- 5
sum.ab <- val.a + val.b

6. 95, 86, 47, 55, 68로 구성된 벡터 vc.1을 생성하고 vc.1의 내용을 출력하는 코드를 작성하시오.

vc.1 <- c(95, 86, 47, 55, 68)
vc.1
## [1] 95 86 47 55 68

7. 100~200 사이의 짝수로 구성된 벡터 vc.2를 생성하고 vc.2의 내용을 출력하는 코드를 작성하시오.

vc.2 <- c(seq(100,200,2))
vc.2
##  [1] 100 102 104 106 108 110 112 114 116 118 120 122 124 126 128 130 132 134 136
## [20] 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 172 174
## [39] 176 178 180 182 184 186 188 190 192 194 196 198 200

8. 20개의 TRUE로 구성된 vc.3를 생성하고 vc.3의 내용을 출력하는 코드를 작성하시오(rep 함수 사용).

vc.3 <- c(rep(TRUE,20))
vc.3
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [16] TRUE TRUE TRUE TRUE TRUE

9. 100에서 200으로 구성된 벡터 d를 생성한 다음 각 문제를 수행하는 코드를 작성하고 답을 구하시오.

d <- c(100:200)
d
##   [1] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
##  [19] 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
##  [37] 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
##  [55] 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
##  [73] 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
##  [91] 190 191 192 193 194 195 196 197 198 199 200
d[10]
## [1] 109
d[-c(92:101)]
##  [1] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
## [20] 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
## [39] 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
## [58] 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
## [77] 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
d[seq(2,101,2)]   # d[d%%2==1]
##  [1] 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137
## [20] 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175
## [39] 177 179 181 183 185 187 189 191 193 195 197 199
d[seq(3,101,3)]   # d[d%%3==0]
##  [1] 102 105 108 111 114 117 120 123 126 129 132 135 138 141 144 147 150 153 156
## [20] 159 162 165 168 171 174 177 180 183 186 189 192 195 198
d.20 <- d[1:20]
d.20
##  [1] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
## [20] 119
d.20[-5]
##  [1] 100 101 102 103 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
d.20[-c(5,7,9)]    ## 방법 1
##  [1] 100 101 102 103 105 107 109 110 111 112 113 114 115 116 117 118 119
d.20[-seq(5,9,2)]  ## 방법 2
##  [1] 100 101 102 103 105 107 109 110 111 112 113 114 115 116 117 118 119

10. 월별 결석생 수 통계가 다음과 같을 때 이 자료를 absent 벡터에 저장하시오(결석생 수를 값으로 하고, 월 이름을 값의 이름으로 한다).

월 | JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT" | NOV | DEC
결석생수| 10 | 8 | 14 | 15 | 9 | 10 | 15 | 12 | 9 | 7 | 8 | 7

absent <- c(10,8,14,15,9,10,15,12,9,7,8,7)
names(absent) <- c("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC")
absent
## JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC 
##  10   8  14  15   9  10  15  12   9   7   8   7
absent["MAY"]
## MAY 
##   9
absent[c("JUN","SEP")]
## JUN SEP 
##  10   9
sum(absent[c(1:6)])
## [1] 66
sum(absent[c(7:12)])/6
## [1] 9.666667

11. 벡터 d1, d2가 다음과 같을 때 각 문제를 수행하기 위한 코드를 작성하고 답을 구하시오.

d1 <- 1:50
d2 <- 51:100

d1 <- c(1:50)
d1
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
d2 <- 51:100
d2
##  [1]  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69
## [20]  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88
## [39]  89  90  91  92  93  94  95  96  97  98  99 100
d2 <- 51:100
length(d2)
## [1] 50
d1+d2
##  [1]  52  54  56  58  60  62  64  66  68  70  72  74  76  78  80  82  84  86  88
## [20]  90  92  94  96  98 100 102 104 106 108 110 112 114 116 118 120 122 124 126
## [39] 128 130 132 134 136 138 140 142 144 146 148 150
d2-d1
##  [1] 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50
## [26] 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50
d1*d2
##  [1]   51  104  159  216  275  336  399  464  531  600  671  744  819  896  975
## [16] 1056 1139 1224 1311 1400 1491 1584 1679 1776 1875 1976 2079 2184 2291 2400
## [31] 2511 2624 2739 2856 2975 3096 3219 3344 3471 3600 3731 3864 3999 4136 4275
## [46] 4416 4559 4704 4851 5000
d2/d1
##  [1] 51.000000 26.000000 17.666667 13.500000 11.000000  9.333333  8.142857
##  [8]  7.250000  6.555556  6.000000  5.545455  5.166667  4.846154  4.571429
## [15]  4.333333  4.125000  3.941176  3.777778  3.631579  3.500000  3.380952
## [22]  3.272727  3.173913  3.083333  3.000000  2.923077  2.851852  2.785714
## [29]  2.724138  2.666667  2.612903  2.562500  2.515152  2.470588  2.428571
## [36]  2.388889  2.351351  2.315789  2.282051  2.250000  2.219512  2.190476
## [43]  2.162791  2.136364  2.111111  2.086957  2.063830  2.041667  2.020408
## [50]  2.000000
sum(d1)
## [1] 1275
sum(d2)
## [1] 3775
sum(d1)+sum(d2)  # sum(c(d1,d2))
## [1] 5050
max(d2)  # 가장 큰 값
## [1] 100
min(d2)  # 가장 작은 값
## [1] 51
mean(d2)
## [1] 75.5
mean(d1)
## [1] 25.5
mean(d2)-mean(d1)
## [1] 50
sort(d1,decreasing = TRUE) # sort(d1,T)
##  [1] 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26
## [26] 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1
d3 <- d1[c(1:10)]
d3[c(11:20)] <- d2[c(1:10)]
# d3 <- c(d1[1:10], d2[1:10])
# d3 <- c(sort(d1)[1:10],sort(d2)[1:10])
d3
##  [1]  1  2  3  4  5  6  7  8  9 10 51 52 53 54 55 56 57 58 59 60

12. 다음과 같이 벡터 v1을 생성한 다음 각 문제를 수행하기 위한 코드를 작성하고 답을 구하시오(문제를 풀다 보면 v1의 내용이 변경되기도 하는데, 모든 문제는 최초의 v1을 대상으로 하여 해결 할 것).

v1 <- 51:90

v1 <- 51:90
v1[v1<60]
## [1] 51 52 53 54 55 56 57 58 59
v1 <- 51:90
length(v1[v1<70])
## [1] 19
v1 <- 51:90
sum(v1[v1>65])
## [1] 1950
v1 <- 51:90
v1[60<v1 & v1<73]
##  [1] 61 62 63 64 65 66 67 68 69 70 71 72
v1 <- 51:90
v1[v1<65 | v1>80]
##  [1] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 81 82 83 84 85 86 87 88 89 90
v1 <- 51:90
v1[v1%%7==3]
## [1] 52 59 66 73 80 87
v1 <- 51:90
v1[v1%%7==0] <- 0
v1
##  [1] 51 52 53 54 55  0 57 58 59 60 61 62  0 64 65 66 67 68 69  0 71 72 73 74 75
## [26] 76  0 78 79 80 81 82 83  0 85 86 87 88 89 90
v1 <- 51:90
sum(seq(2,length(v1),2))
## [1] 420
# sum(v1[v1%%2==0])
v1 <- 51:90
v1[v1%%2==1 | v1>80]
##  [1] 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 82 83 84 85 86 87 88 89 90
v1 <- 51:90
v1[v1%%3==0 & v1%%5==0]
## [1] 60 75 90
v1 <- 51:90
v1[v1%%2==0] <- v1[v1%%2==0]*2
v1
##  [1]  51 104  53 108  55 112  57 116  59 120  61 124  63 128  65 132  67 136  69
## [20] 140  71 144  73 148  75 152  77 156  79 160  81 164  83 168  85 172  87 176
## [39]  89 180
v1 <- 51:90
v1[-seq(6,40,7)] 
##  [1] 51 52 53 54 55 57 58 59 60 61 62 64 65 66 67 68 69 71 72 73 74 75 76 78 79
## [26] 80 81 82 83 85 86 87 88 89 90
# v1[v1%%7 !=0]