r 프로그래밍 실습 예제입니다 #### 1. R을 이용하여 다음 계산식의 코드를 작성하고 답을 구하시오. + 25+99

25+99
## [1] 124
456-123
## [1] 333
2*(3+4)
## [1] 14
(3+5*6)%/%7
## [1] 4
(7-4)*3
## [1] 9
210+35
## [1] 245
1256%%7
## [1] 3
184%%5
## [1] 4
1976%/%24
## [1] 82
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
x<-c(10,12,15)
pi*x^2
## [1] 314.00 452.16 706.50

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

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

x<-c(6,8,10)
y<-2*x^2+5*x+10
y
## [1] 112 178 260

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

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

#객체val.b를 찾을 수 없는 에러가 난다. 따라서 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의 내용을 출력하는 코드를 작성하시오.

x<-100:200
vc.2<-x[x%%2==0]
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 함수 사용).

x<-rep(c(1,2,3,4,5),times=20)
vc.3<-x%%5==0
length(vc.3[vc.3==TRUE])
## [1] 20

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

(d<-c(100:200))
##   [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
tail(d,10)
##  [1] 191 192 193 194 195 196 197 198 199 200
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[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<-head(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] 100 101 102 103 105 107 109 110 111 112 113 114 115 116 117 118 119

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

월 | JAN | FEB | MAR | APR | 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)<-month.name
absent
##   January  February     March     April       May      June      July    August 
##        10         8        14        15         9        10        15        12 
## September   October  November  December 
##         9         7         8         7
absent
##   January  February     March     April       May      June      July    August 
##        10         8        14        15         9        10        15        12 
## September   October  November  December 
##         9         7         8         7
absent[5]
## May 
##   9
absent[c(7,9)]
##      July September 
##        15         9
sum(absent[1:6])
## [1] 66
sum(absent[7:12])
## [1] 58

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

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

(d1<-1:50)
##  [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)
##  [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
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]  0  0  2  2  0  2  1  2  5  0  6  2 11  8  5  2 16 14 12 10  8  6  4  2  0
## [26] 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
sum(d1)
## [1] 1275
sum(d2)
## [1] 3775
sum(d1,d2)
## [1] 5050
max(d2)
## [1] 100
min(d2)
## [1] 51
#d2와 d1의 값들의 평균값을 각각 구하고 두 평균의 차이를 출력하시오.
(a<-mean(d1))
## [1] 25.5
(b<-mean(d2))
## [1] 75.5
abs(a-b)
## [1] 50
#d1의 값들을 큰 수에서 작은 수 순서로 정렬하여 출력하시오.
sort(d1,decreasing = 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
a<-head(d1,10)
b<-head(d2,10)
d3<-c(a,b)

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

v1 <- 51:90

v1 <- 51:90
v1[v1<60]
## [1] 51 52 53 54 55 56 57 58 59
length(v1[v1<70])
## [1] 19
sum(v1[v1>65])
## [1] 1950
v1[v1>60&v1<73]
##  [1] 61 62 63 64 65 66 67 68 69 70 71 72
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[v1%%7==3]
## [1] 52 59 66 73 80 87
v1[v1%%7==0]<-0
#위에서 7의 배수를 0으로 변경한 것을 다시 되돌렸습니다.
v1 <- 51:90
sum(v1[v1%%2==0])
## [1] 1420
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[v1%%3==0|v1%%5==0]
##  [1] 51 54 55 57 60 63 65 66 69 70 72 75 78 80 81 84 85 87 90
v1[v1%%2==0]<-v1[v1%%2==0]*2
v1[v1%%7==0]<-NA
(V1<-v1[is.na(v1)==FALSE])
##  [1]  51 104  53 108  55  57 116  59 120  61 124 128  65 132  67 136  69  71 144
## [20]  73 148  75 152 156  79 160  81 164  83  85 172  87 176  89 180