๐Ÿ’ป IT/๋น…๋ฐ์ดํ„ฐ

๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ๋„๊ตฌ R (3)

Record_er 2024. 4. 20. 17:31

์˜์‚ฌ๊ฒฐ์ •(Decision Making)

  • ํ•˜๋‚˜ ์ด์ƒ์˜ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ํ๋ฆ„์œผ๋กœ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์กฐ
  • R์—์„œ๋Š” if๋ฌธ, if~else๋ฌธ, switch๋ฌธ์„ ์ œ๊ณต
  • ์˜์‚ฌ๊ฒฐ์ • ๊ตฌ์กฐ์˜ ์šฉ๋„

if๋ฌธ : ์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ๋งŒ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰

  • ์กฐ๊ฑด์ด ์ฐธ(TRUE)์ธ ๊ฒฝ์šฐ์—๋งŒ ๋ช…๋ น์–ด ์ˆ˜ํ–‰
  • ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์˜์‚ฌ๊ฒฐ์ • ๊ตฌ์กฐ
x<-36L
if(is.integer(x)){
	print("x๋Š” ์ •์ˆ˜")
}

[1] "x๋Š” ์ •์ˆ˜"

 

 

if~esle๋ฌธ : ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ณ„๊ฐœ์˜ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰

  • ์กฐ๊ฑด์ด ์ฐธ(TRUE)์ธ ๊ฒฝ์šฐ์™€ ๊ฑฐ์ง“(FALSE)์ธ ๊ฒฝ์šฐ ์„œ๋กœ ๋‹ค๋ฅธ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜์‚ฌ๊ฒฐ์ • ๊ตฌ์กฐ
x<-3.14
if(is.integer(x)){
	print("์ •์ˆ˜์ž…๋‹ˆ๋‹ค")
}else{
	print("์ •์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค")
}

[1] "์ •์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค"

 

 

switch๋ฌธ : ๋‹ค์–‘ํ•œ ๊ฐ’์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ณ„๊ฐœ์˜ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰

  • ์กฐ๊ฑด์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ(case)์˜ ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰
  • ์กฐ๊ฑด์ด ๋‹ค์ˆ˜๋กœ์˜ ๋ถ„๊ธฐ๋ฅผ ๊ฐ€์งˆ ๋•Œ ์œ ๋ฆฌ
  • ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ๊ธฐ๋ณธ๊ฐ’(default)์ด ์—†์Œ
x<-"han"
switch(x, "kim"="๊น€", "lee"="์ด", "han"="ํ•œ")

[1] "ํ•œ"

 

 

 

๋ฃจํ”„(Loop)

  • ํŠน์ •ํ•œ ๋ช…๋ น๋ฌธ์„ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ๋ฒˆ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ
  • ์ข…๋ฅ˜ : repeat ๋ฃจํ”„, while ๋ฃจํ”„, for ๋ฃจํ”„

repeat ๋ฃจํ”„

  • ๋ฌดํ•œํžˆ ๋ฐ˜๋ณตํ•˜์—ฌ ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰ํ•˜๋Š” ๊ตฌ์กฐ
  • if๋ฌธ๊ณผ break๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต์—์„œ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ์Œ
i<-1
repeat {
	i<-i+1
    if(i==3) {	#๋ฐ˜๋ณตํ•˜๋‹ค i๊ฐ€ 3์ด ๋˜๋ฉด ์•„๋ž˜ ์‹คํ–‰ํ›„ break
    	print(i)
        break
    }
}

[1] 3

 

 

while ๋ฃจํ”„

  • ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ๋™์ผํ•œ ๋ช…๋ น๋ฌธ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š” ๋ฃจํ”„
  • ๋ช…๋ น๋ฌธ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด ๋˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ๋ถ€ํ„ฐ ํƒˆ์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ
i<-1
while(i<3) {	#i๊ฐ€ 3๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ ๊ณ„์† ๋ฐ˜๋ณต
	i<-i+1
}

i
[1] 3

 

 

for ๋ฃจํ”„

  • ๋ฒกํ„ฐ์˜ ๊ฐ ์„ฑ๋ถ„์— ๋”ฐ๋ผ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฃจํ”„ ๊ตฌ์กฐ
  • ๋ฒกํ„ฐ ์„ฑ๋ถ„์˜ ์œ„์น˜(index)์— ์ผ์ผํžˆ ์ ‘๊ทผํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฒกํ„ฐ ์„ฑ๋ถ„๋ณ„ ๋ช…๋ น๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์กฐ์ผ๋•Œ ์œ ๋ฆฌ
  • ๋ฒกํ„ฐ ์„ฑ๋ถ„์˜ ๊ฐ’์„ ๋Œ€์ž…ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜ ์ง€์ • ํ•„์š”
v<-c(2,3,5,7,10)
s<-0	#s๋ณ€์ˆ˜ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
for(ve in v) {		#v์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋ณ€์ˆ˜๋“ค์„ ve์•ˆ์— ๋„ฃ๋Š”๋‹ค
	s<-s+ve		#s๋ณ€์ˆ˜ ์•ˆ์— s+ve๊ฐ’์„ ๋„ฃ์–ด๋ผ
}
print(s)

[1] 27

 

 

 

๋ฃจํ”„ ์ œ์–ด ๋ช…๋ น๋ฌธ

 

break๋ฌธ :  ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ๋ฃจํ”„๋ฌธ์„ ์ค‘๋‹จํ•˜๊ณ , ๋ฃจํ”„๋ฌธ ์ดํ›„ ๋ช…๋ น๋ฌธ๋ถ€ํ„ฐ ์‹คํ–‰ํ•œ๋‹ค.

next๋ฌธ : ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ๋ฃจํ”„๋ฌธ์„ ์ค‘๋‹จํ•˜๊ณ , ๋ฃจํ”„๋ฌธ์˜ ์ฒ˜์Œ์œผ๋กœ ๋˜๋Œ์•„๊ฐ€ ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.

next์˜ˆ์‹œ

v<-1:10
for(ve in v) {
	if(ve%%2 != 0) {	# %%:๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž
    	next
    }
    print(ve)
}

[1] 2
[1] 4
[1] 6
[1] 8
[1] 10

# ve๋ฅผ 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์ด 1์ด๋ฉด next(์ฒ˜์Œ for๋ฌธ)์œผ๋กœ ๋˜๋Œ์•„๊ฐ„๋‹ค
# ์ฆ‰, 1~10์ˆซ์ž ์ค‘ ์ง์ˆ˜๋งŒ print๋กœ ๋„˜์–ด๊ฐ

 

 

 

ํ•จ์ˆ˜(Functions)

  • ํŠน์ •ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น๋ฌธ๊ณผ ๊ตฌ์กฐ๋ฅผ ๋‚˜์—ดํ•œ ์ง‘ํ•ฉ

 

๊ธฐ๋ณธ ํ•จ์ˆ˜(built-in functions) : R์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š” ํ•จ์ˆ˜

#์‚ฌ์šฉ ๋ฐฉ๋ฒ•
<ํ•จ์ˆ˜๋ช…>(<์ž…๋ ฅ์ธ์ž1>,<์ž…๋ ฅ์ธ์ž2>,...)
<ํ•จ์ˆ˜๋ช…>(์ž…๋ ฅ์ธ์ž๋ช…1=<์ž…๋ ฅ์ธ์ž1>,์ž…๋ ฅ์ธ์ž๋ช…2=<์ž…๋ ฅ์ธ์ž2>,...)

#์˜ˆ์‹œ
mean(c(88,96,92))	#mean(ํ‰๊ท ์„ ๋‚ด๋Š” ํ•จ์ˆ˜)๊ณผ cํ•จ์ˆ˜์˜ ํ˜ธ์ถœ
png(file="result.png")	#์ž…๋ ฅ์ธ์ž๋ช…์„ ์ง€์ •ํ•˜์—ฌ ํ˜ธ์ถœ

 

 

์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜(user-defined functions) : ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋ชฉ์ ์— ๋งž๊ฒŒ๋” ํ•จ์ˆ˜๋ช…, ๋ช…๋ น๋ฌธ, ์‹คํ–‰๊ตฌ์กฐ, ์ž…๋ ฅ์ธ์ž, ์ถœ๋ ฅ์ธ์ž๋ฅผ ์ง€์ •ํ•œ ํ•จ์ˆ˜

  • ํ•„์ˆ˜ ์š”์†Œ : ํ•จ์ˆ˜๋ช…, function ํ‚ค์›Œ๋“œ, ์ค‘๊ด„ํ˜ธ ๋“ฑ
  • ์„ ํƒ ์š”์†Œ : ์ž…๋ ฅ์ธ์ž, ์ถœ๋ ฅ์ธ์ž, ์ž…๋ ฅ์ธ์ž๋ช… ๋“ฑ
# ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ ์ƒ์„ฑ ๋ฌธ๋ฒ•
<ํ•จ์ˆ˜๋ช…><-function((์ž…๋ ฅ์ธ์ž๋ช…1=)<์ž…๋ ฅ์ธ์ž1>,...) {
	... #ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์‹คํ–‰ํ•  ๋ช…๋ น๋ฌธ ๋ฐ ๊ตฌ์กฐ
}

#์˜ˆ์‹œ
myFunc<-function(v) {	#์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ myFunc()
	s<-0
    for(ve in v) {
    	s<-s+v
    }
    return(s)
}
myFunc(c(2,3,7)	#์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ

[1] 6 9 21