ํƒœ๊ทธ ๋ณด๊ด€๋ฌผ: code-golf

code-golf

R์—์„œ์˜ ๊ณจํ”„ ํŒ ์ฝคํŒฉํŠธํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ 

R ํ†ต๊ณ„ ์–ธ์–ด๋กœ ๊ณจํ”„ ํŒ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. R์€ ์•„๋งˆ๋„ ๊ณจํ”„๋ฅผ์œ„ํ•œ ๋น„ ์ „ํ†ต์ ์ธ ์„ ํƒ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŠน์ • ์ž‘์—… (์‹œํ€€์Šค, ์ž„์˜์„ฑ, ๋ฒกํ„ฐ ๋ฐ ๋ชฉ๋ก)์„ ๋งค์šฐ ์ฝคํŒฉํŠธํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ๋งŽ์€ ๋‚ด์žฅ ํ•จ์ˆ˜๋Š” ๋งค์šฐ ์งง์€ ์ด๋ฆ„ ์„ ๊ฐ€์ง€๋ฉฐ ์„ ํƒ์  ์ค„ ์ข…๊ฒฐ ์ž (;)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. R์˜ ์ฝ”๋“œ ๊ณจํ”„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜๋Š” ํŒ๊ณผ ์š”๋ น์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?



๋‹ต๋ณ€

๋ช‡ ๊ฐ€์ง€ ํŒ :

  1. R์—์„œ๋Š” <-over ๋ฅผ ์‚ฌ์šฉ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค =. ๊ณจํ”„์˜ ๊ฒฝ์šฐ ๋ฐ˜๋Œ€ ์ž…์žฅ =์ด ์งง์•„ ์ง€๊ธฐ ๋•Œ๋ฌธ์— โ€ฆ
  2. ํ•จ์ˆ˜๋ฅผ ๋‘ ๋ฒˆ ์ด์ƒ ํ˜ธ์ถœํ•˜๋ฉด ์งง์€ ๋ณ„์นญ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    as.numeric(x)+as.numeric(y)
    
    a=as.numeric;a(x)+a(y)
    
  3. ๋ถ€๋ถ„ ๋งค์นญ์€ ์นœ๊ตฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ํ•จ์ˆ˜๊ฐ€ ํ•˜๋‚˜์˜ ํ•ญ๋ชฉ ๋งŒ ํ•„์š”ํ•œ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ ํ•  ๋•Œ ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋น„๊ต
    rle(x)$lengths์—rle(x)$l

  4. ๋งŽ์€ ๊ณผ์ œ๋Š” ์ž…๋ ฅ์„ ์ฝ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. scan์‚ฌ์šฉ์ž๋Š” ์ข…์ข… ๋นˆ ์ค„์„ ์ž…๋ ฅํ•˜์—ฌ ์ž…๋ ฅ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

    scan()    # reads numbers into a vector
    scan(,'') # reads strings into a vector
    
  5. ๊ฐ•์ œ๊ฐ€ ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. t=1๋ณด๋‹ค ํ›จ์”ฌ ์งง์Šต๋‹ˆ๋‹ค t=TRUE. ๋˜๋Š” switch๊ท€์ค‘ํ•œ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ 0,1 ๋Œ€์‹  1,2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

    if(length(x)) {} # TRUE if length != 0
    sum(x<3)         # Adds all the TRUE:s (count TRUE)
    
  6. ํ•จ์ˆ˜๊ฐ€ ๋ณต์žกํ•œ ๊ฒƒ์„ ๊ณ„์‚ฐํ•˜๊ณ  ๋™์ผํ•œ ํ•ต์‹ฌ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ a) ์ž‘์€ ํ•จ์ˆ˜๋กœ ๋‚˜๋ˆ„๊ณ  b) ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋ชฉ๋ก์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ c) ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ธ์ˆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  7. ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ž˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. R์—๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉฐ, ๋ฌธ์ž๊ฐ€ ๊ฑฐ์˜์—†๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ๋Š” ๊ธฐ๋Šฅ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์• ๋งคํ•˜์ง€๋งŒ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ๋“ค :

sequence
diff
rle
embed
gl # Like rep(seq(),each=...) but returns a factor

์ผ๋ถ€ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ ์„ธํŠธ ๋ฐ ๊ธฐํ˜ธ :

letters     # 'a','b','c'...
LETTERS     # 'A','B','C'...
month.abb   # 'Jan','Feb'...
month.name  # 'January','Feburary'...
T           # TRUE
F           # FALSE
pi          # 3.14...

๋‹ต๋ณ€

  1. ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๋Œ€์‹ ์„ library์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€์—์„œ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค ::. ๋‹ค์Œ์„ ๋น„๊ตํ•˜์‹ญ์‹œ์˜ค.

    library(splancs);inout(...)
    splancs::inout(...)
    

    ๋ฌผ๋ก  ํŒจํ‚ค์ง€์—์„œ ํ•˜๋‚˜์˜ ๋‹จ์ผ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

  2. ์ด๊ฒƒ์€ ์‚ฌ์†Œํ•œ์ด์ง€๋งŒ ๊ธฐ๋Šฅ์„ ์•จ๋ฆฌ์–ด์‹ฑ์˜ ํ† ๋ฏธ์˜ ํŠธ๋ฆญ @ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์—„์ง€ ์†๊ฐ€๋ฝ์˜ ๊ทœ์น™ : ํ•จ์ˆ˜ ์ด๋ฆ„์˜ ๊ธธ์ด๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ m์™€ ์‚ฌ์šฉ nํ›„ ๊ฒฝ์šฐ์—๋งŒ ๋ณ„์นญ ์‹œ๊ฐ„์„ m*n > m+n+3์ง€์ถœ ๋ณ„์นญ์„ ์ •์˜ ํ•  ๋•Œ (๋•Œ๋ฌธ์— m+3๋‹ค์Œ ๋‹น์‹ ์€ ์—ฌ์ „ํžˆ ์ง€์ถœ ๋ณ„๋ช…์ด ์‚ฌ์šฉ๋  ๋•Œ๋งˆ๋‹ค 1). ์˜ˆ๋ฅผ ๋“ค๋ฉด :

    nrow(a)+nrow(b)     # 4*2 < 4+3+2
    n=nrow;n(a)+n(b)
    length(a)+length(b) # 6*2 > 6+3+2
    l=length;l(a)+l(b)
    
  3. ๊ธฐ๋Šฅ์˜ ๋ถ€์ž‘์šฉ์œผ๋กœ ๊ฐ•์š” :

    • ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ as.integer๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :.

      as.integer("19")
      ("19":1)[1] #Shorter version using force coercion.
      
    • ์ •์ˆ˜, ์ˆซ์ž ๋“ฑ์€ ๋‹ค์Œ paste๋Œ€์‹ ์— ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์Šทํ•˜๊ฒŒ ๊ฐ•์ œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค as.character.

      as.character(19)
      paste(19) #Shorter version using force coercion.
      

๋‹ต๋ณ€

๋งค์šฐ ๊ตฌ์ฒด์ ์ธ ๊ณจํ”„ ํŒ :

  • ๋‹น์‹ ์ด ๋ฒกํ„ฐ์˜ ๊ธธ์ด๋ฅผ ์ถ”์ถœํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ, sum(x|1)๋ณด๋‹ค ์งง์€ length(x)๋งŒํผ x, ์ˆซ์ž์˜ ์ •์ˆ˜, ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๋…ผ๋ฆฌ์ ์ด๋‹ค.
  • ๋‹น์‹ ์ด ๋ฒกํ„ฐ์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ถ”์ถœํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ, ๊ทธ๊ฒƒ์€ (๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด) ๋ฒกํ„ฐ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ €๋ ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๋’ค์ชฝ์œผ๋กœ ์‚ฌ์šฉ rev()ํ•˜๊ณ  ํ˜ธ์ถœ x[1]๋ณด๋‹ค๋Š” x[length(x)](๋˜๋Š” ์œ„์˜ ํŒ์„ ์‚ฌ์šฉ x[sum(x|1)]) (๋˜๋Š” tail(x,1)โ€” ๊ฐ์‚ฌ ์ฃผ์„ธํŽ˜์„!). ์ด๊ฒƒ์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ๋ณ€ํ˜• (๋‘ ๋ฒˆ์งธ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊ฐ€ ํ•„์š”ํ•œ ๊ณณ)์ด ์—ฌ๊ธฐ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ๋ฒกํ„ฐ๋ฅผ ๋’ค๋กœ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์—†๋”๋ผ๋„ rev(x)[1]์—ฌ์ „ํžˆ ์งง์Šต๋‹ˆ๋‹ค x[sum(x|1)](๋ฐ ๋ฌธ์ž ๋ฒกํ„ฐ์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค). ๋•Œ๋กœ๋Š” ๋Œ€์‹ ์„ rev์‚ฌ์šฉ n:1ํ•˜๋Š” ๋“ฑ์˜ ํ•„์š”์กฐ์ฐจ ์—†์Šต๋‹ˆ๋‹ค 1:n.
  • ( ์—ฌ๊ธฐ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ). ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ ํ–‰๋ ฌ๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค as.matrix(x). ์กฐ์˜ฎ๊น€์˜ ์กฐ์˜ฎ๊น€ t(t(x)).

  • if๊ณต์‹์ ์ธ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "if"(x<y,2,3)๋ณด๋‹ค ์งง์Šต๋‹ˆ๋‹ค if(x<y)2 else 3(๋ฌผ๋ก  3-(x<y)๋‘˜ ์ค‘ ํ•˜๋‚˜๋ณด๋‹ค ์งง์Šต๋‹ˆ๋‹ค). ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ณต์‹ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๊ด„ํ˜ธ ์Œ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ๋™์ผํ•˜์ง€ ์•Š์€ ์ˆซ์ž ๊ฐ์ฒด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” if(x-y)๊ฒฝ์šฐ๋ณด๋‹ค ์งง์Šต๋‹ˆ๋‹ค if(x!=y). 0์ด ์•„๋‹Œ ์ˆซ์ž๋Š”๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค TRUE. ํ‰๋“ฑ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€์‹  if(x==y)a else b์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค if(x-y)b else a. ๋˜ํ•œ ์ด์ „ ์š”์ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • ์ด ๊ธฐ๋Šฅ el์€ ๋ชฉ๋ก์—์„œ ํ•ญ๋ชฉ์„ ์ถ”์ถœํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์˜ˆ๋Š” ์•„๋งˆ๋„ strsplit: el(strsplit(x,""))์ด์ƒ ์ ์€ ๋ฐ”์ดํŠธ์ž…๋‹ˆ๋‹ค strsplit(x,"")[[1]].

  • ( ์—ฌ๊ธฐ์— ์‚ฌ์šฉ๋จ ) ๋ฒกํ„ฐ ํ™•์žฅ์€ ๋ฌธ์ž๋ฅผ ์ ˆ์•ฝ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒกํ„ฐ v๊ธธ์ด๊ฐ€ ๊ธธ๋ฉด ์˜ค๋ฅ˜์—†์ด nํ• ๋‹น ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค v[n+1]. ์ฒซ ๋ฒˆ์งธ ์—ด ๊ณ„์Šน์„ ์ธ์‡„ํ•˜๊ณ  ์‹ถ์—ˆ ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹น์‹ ์€ ํ•  ์ˆ˜ : v=1;for(i in 2:10)v[i]=v[i-1]*i๋ณด๋‹ค๋Š” v=1:10:for(...)(์–ธ์ œ๋‚˜์ฒ˜๋Ÿผ, ๋˜ ๋‹ค๋ฅธ, ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ : cumprod(1:10))

  • ๋•Œ๋กœ๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฌธ์ œ (ํŠนํžˆ 2D ๋ฌธ์ œ)์˜ plot๊ฒฝ์šฐ ํ…์ŠคํŠธ๋ณด๋‹ค ํ…์ŠคํŠธ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค cat. ์–ด๋–ค ๋ฌธ์ž๊ฐ€ ๊ทธ๋ ค ์ง€๋Š”์ง€ pch=๋ฅผ plot์ œ์–ดํ•˜๋Š” ์ธ์ˆ˜ . ์ด๊ฒƒ์€ pc=๋ฐ”์ดํŠธ๋ฅผ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์ถ• ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๊ฒฝ๊ณ ๋ฅผ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค). ์—ฌ๊ธฐ์— ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค .

  • ์ˆซ์ž๋ฅผ ๋ฐ”๋‹ฅ์— ์“ฐ๋ ค๋ฉด์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค floor(x). x%/%1๋Œ€์‹  ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค .

  • ์ˆซ์ž ํ˜• ๋ฒกํ„ฐ ๋‚˜ ์ •์ˆ˜ํ˜• ๋ฒกํ„ฐ์˜ ์š”์†Œ๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€์ง€ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด sd๊ณผ ๊ฐ™์€ ์žฅํ™ฉํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ข…์ข… ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค all.equal. ๋ชจ๋“  ์š”์†Œ๊ฐ€ ๋™์ผํ•˜๋ฉด ํ‘œ์ค€ ํŽธ์ฐจ๊ฐ€ 0 ( FALSE) ์ด๊ณ  ํ‘œ์ค€ ํŽธ์ฐจ๊ฐ€ ์–‘์ˆ˜ ( TRUE)์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค .

  • ์ •์ˆ˜ ์ž…๋ ฅ์ด ํ•„์š”ํ•œ ์ผ๋ถ€ ํ•จ์ˆ˜๋Š” ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, seq(3.5)๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค 1 2 3( :์—ฐ์‚ฐ์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค ). ์ด๊ฒƒ์€ ํ˜ธ์ถœ์„ ํ”ผํ•  ์ˆ˜ floor์žˆ์œผ๋ฉฐ ๋•Œ๋กœ๋Š” /๋Œ€์‹  ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค %/%.


๋‹ต๋ณ€

  1. ๋‚ด์žฅ ๋งคํฌ๋กœ๋ฅผ ๋‚จ์šฉ Tํ•˜๊ณ  F. ๊ธฐ๋ณธ์ ์œผ๋กœ TRUEand๋กœ ํ‰๊ฐ€๋˜๋ฉฐ FALSE์ˆซ์ž 1๋ฐ ๋กœ ์ž๋™ ๋ณ€ํ™˜ 0๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋งˆ์Œ๋Œ€๋กœ ์žฌ์ •์˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์นด์šดํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค (์˜ˆ : i=0โ€ฆ i=i+1) T๋˜๋Š” Fํ•„์š”์— ๋”ฐ๋ผ ์‚ฌ์šฉ ํ•˜๊ฑฐ๋‚˜ F=F+1๋‚˜์ค‘์— ๋ฐ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .
  2. ํ•จ์ˆ˜๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ return()ํ˜ธ์ถœ ๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ๋ช…์‹œ์ ์ธ ํ˜ธ์ถœ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .
  3. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์งง์€ ๋ณ„์นญ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค p=paste. ํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์ •ํ™•ํžˆ ๋‘ ๊ฐœ์˜ ์ธ์ˆ˜ ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ„์นญ์ด ๋ถ™์œผ๋ฉด ์ผ๋ถ€ ๋ฐ”์ดํŠธ๊ฐ€ ์ ˆ์•ฝ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฝ์ž… ๋ณ„๋ช…์€๋กœ ๋ฌถ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค %. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    `%p%`=paste

    ๊ทธ๋ฆฌ๊ณ  ์ดํ›„ x%p%y1 ๋ฐ”์ดํŠธ๋ณด๋‹ค ์งง์€ ๊ฒƒ p(x,y)์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋ณ„๋ช… ์ •์˜๋Š” ๋น„๊ณ  ์ •๋ณด ๋‹ค 4 ๋ฐ”์ดํŠธ ๋” ๊ธธ p=paste๋ฏ€๋กœ ๊ทธ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.


๋‹ต๋ณ€

์‚ฌ์šฉ if, ifelse๋ฐ`if`

R.์—์„œ if-statement๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณจํ”„ ์ตœ์ ํ™” ์†”๋ฃจ์…˜์€ ํฌ๊ฒŒ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ

  1. if์ œ์–ด ํ๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ฒกํ„ฐํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ธธ์ด 1์˜ ์กฐ๊ฑด ๋งŒ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. else์„ ํƒ์ ์œผ๋กœ else ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  2. ifelseํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋ฒกํ„ฐํ™”๋˜์–ด ์ž„์˜ ๊ธธ์ด์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ์ฃผ์žฅ (๋‹ค๋ฅธ ๊ฐ€์น˜)์€ ์˜๋ฌด์ ์ž…๋‹ˆ๋‹ค. *
  3. `if`์™€ ๊ตฌ๋ฌธ์ด ๋™์ผํ•œ ํ•จ์ˆ˜ ifelse์ž…๋‹ˆ๋‹ค. ๋ฒกํ„ฐํ™”๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ๋ฐ˜ํ™˜ ์ธ์ˆ˜๊ฐ€ ์˜๋ฌดํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

* ๊ธฐ์ˆ ์ ์œผ๋กœ ์˜๋ฌด์  ์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ifelse(TRUE,x)์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ๋น„์–ด ์žˆ๊ณ  ์กฐ๊ฑด์ด๋กœ ํ‰๊ฐ€๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค FALSE. ๋”ฐ๋ผ์„œ ์กฐ๊ฑด์ด ํ•ญ์ƒ ํ™•์‹คํ•˜๋‹ค๊ณ  ํ™•์‹ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋ฉฐ TRUE, ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ if ๋ฌธ์œผ๋กœ ๊ท€์ฐฎ๊ฒŒํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์˜ˆ

์ด๋“ค์€ ๋ชจ๋‘ ๋™๋“ฑํ•ฉ๋‹ˆ๋‹ค :

if(x)y else z # 13 bytes
ifelse(x,y,z) # 13 bytes
`if`(x,y,z)   # 11 bytes

else์ฝ”๋“œ์—์„œ ์ง์ ‘ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ณต๋ฐฑ ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

if(x)"foo"else"bar"   # 19 bytes
ifelse(x,"foo","bar") # 21 bytes
`if`(x,"foo","bar")   # 19 bytes

์ง€๊ธˆ๊นŒ์ง€ `if`์ž…๋ ฅ์„ ๋ฒกํ„ฐํ™”ํ•˜์ง€ ์•Š์€ ํ•œ ์Šน์ž๊ฐ€ ๋  ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ else ์กฐ๊ฑด์— ๊ด€์‹ฌ์ด์—†๋Š” ๊ฒฝ์šฐ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์กฐ๊ฑด์ด ์ธ ๊ฒฝ์šฐ ์ผ๋ถ€ ์ฝ”๋“œ ๋งŒ ์‹คํ–‰ํ•˜๋ ค๊ณ ํ•œ๋‹ค๊ณ  ๊ฐ€์ • ํ•ด๋ณด์‹ญ์‹œ์˜ค TRUE. ํ•œ ์ค„์˜ ์ฝ”๋“œ๋งŒ์œผ๋กœ๋„ if๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

if(x)z=f(y)         # 11 bytes
ifelse(x,z<-f(y),0) # 19 bytes
`if`(x,z<-f(y))     # 15 bytes

์—ฌ๋Ÿฌ ์ค„์˜ ์ฝ”๋“œ์—์„œ if์—ฌ์ „ํžˆ ์Šน์ž๊ฐ€๋ฉ๋‹ˆ๋‹ค.

if(x){z=f(y);a=g(y)}        # 20 bytes
ifelse(x,{z=f(y);a=g(y)},0) # 27 bytes
`if`(x,{z=f(y);a=g(y)})     # 23 bytes

์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ์„ฑ์ด๊ธฐ๋„ ์•Š๋Š” ๋‹ค๋ฅธ ์กฐ๊ฑด์— ๋Œ€ํ•œ ๊ด€์‹ฌ์€, ์šฐ๋ฆฌ๋Š” ์ž„์˜์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹  ๊ฐ’์„ ๋ฐ˜ํ™˜ ํ•  ์œ„์น˜. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ, if๋ฐ `if`๋ฐ”์ดํŠธ ์ˆ˜์— ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

if(x)a=b else z=b   # 17 bytes
ifelse(x,a<-b,z<-b) # 19 bytes
`if`(x,a<-b,z<-b)   # 17 bytes

if(x){z=y;a=b}else z=b   # 22 bytes
ifelse(x,{z=y;a=b},z<-b) # 24 bytes
`if`(x,{z=y;a=b},z<-b)   # 22 bytes

if(x)a=b else{z=b;a=y}   # 22 bytes
ifelse(x,a<-b,{z=b;a=y}) # 24 bytes
`if`(x,a<-b,{z=b;a=y})   # 22 bytes

if(x){z=y;a=b}else{z=b;a=y}   # 27 bytes
ifelse(x,{z=y;a=b},{z=b;a=y}) # 29 bytes
`if`(x,{z=y;a=b},{z=b;a=y})   # 27 bytes

์š”์•ฝ

  1. ifelse๊ธธ์ด๊ฐ€ 1๋ณด๋‹ค ํฐ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค .

  2. ๋งŽ์€ ์ฝ”๋“œ ์ค„์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๊ฐ„๋‹จํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ `if`ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด full ifโ€ฆ else๋ฌธ ๋ณด๋‹ค ์งง์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ์–ธ์ œ ๋‹จ์ผ ๊ฐ’์„ ์›ํ•˜๋ฉด์„ TRUE์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค if.

  4. ์ž„์˜์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ `if`ํ•˜๊ณ  if์ผ๋ฐ˜์  ๋ฐ”์ดํŠธ ๊ฐœ์ˆ˜์˜ ๊ด€์ ์—์„œ ๋™์ผํ•˜๋‹ค; ๋‚˜๋Š” if์ฃผ๋กœ ์ฝ๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”์ฒœ ํ•ฉ๋‹ˆ๋‹ค.


๋‹ต๋ณ€

  1. ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ธ์ˆ˜๋กœ ์ œ๊ณตํ•˜๋ฉด์„œ ๋™์‹œ์— ํ˜„์žฌ ํ™˜๊ฒฝ์— ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    sum(x <- 4, y <- 5)
    x
    y
  2. a๋ฅผ ๋ถ€๋ถ„ ์ง‘ํ•ฉํ•˜๊ณ  data.frame์กฐ๊ฑด์ด ์—ฌ๋Ÿฌ ์—ด์— ์˜์กด data.frameํ•˜๋Š” ๊ฒฝ์šฐ with(๋˜๋Š” subset) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฆ„์„ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

    d <- data.frame(a=letters[1:3], b=1:3, c=4:6, e=7:9)
    with(d, d[a=='b' & b==2 & c==5 & e==8,])

    ๋Œ€์‹ ์—

    d[d$a=='b' & d$b==2 & d$c==5 & d$e==8,]

    ๋ฌผ๋ก  ์ด๊ฒƒ์€ ์ฐธ์กฐ data.frame๊ธธ์ด๊ฐ€ ๊ธธ์ด๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.with(,)

  3. if...else๋ธ”๋ก์€ ๋ธ”๋ก์˜ ์ผ๋ถ€๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ตœ์ข… ๋ช…๋ น๋ฌธ์˜ ๊ฐ’์„ ๋ฆฌํ„ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

    a <- 3
    if (a==1) y<-1 else
    if (a==2) y<-2 else y<-3

    ๋‹น์‹ ์€ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

    y <- if (a==1) 1 else
         if (a==2) 2 else 3

๋‹ต๋ณ€

์•”์‹œ ์  ์œ ํ˜• ๋ณ€ํ™˜

๊ธฐ๋Šฅ์€ as.character, as.numeric๊ทธ๋ฆฌ๊ณ  as.logical๋„ˆ๋ฌด ๋ฐ”์ดํŠธ ๋ฌด๊ฒ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ๋‹ค๋“ฌ์–ด ๋ด…์‹œ๋‹ค.

์ˆซ์ž (4 ๋ฐ”์ดํŠธ)์—์„œ ๋…ผ๋ฆฌ๋กœ ๋ณ€ํ™˜

x์ˆซ์ž ํ˜• ๋ฒกํ„ฐ ๋ผ๊ณ  ๊ฐ€์ •ํ•˜์‹ญ์‹œ์˜ค . ๋…ผ๋ฆฌ not ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด !์ˆซ์ž๊ฐ€ ์•”์‹œ ์ ์œผ๋กœ ๋…ผ๋ฆฌ ๋ฒกํ„ฐ๋กœ ๋‹ค์‹œ ์บ์ŠคํŒ… ๋ฉ๋‹ˆ๋‹ค . ์—ฌ๊ธฐ์„œ 0is FALSE๋ฐ 0์ด ์•„๋‹Œ ๊ฐ’์€ TRUE์ž…๋‹ˆ๋‹ค. !๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐ˜์ „์‹œํ‚ต๋‹ˆ๋‹ค.

x=!x

x=0:3;x=!x์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค TRUE FALSE FALSE FALSE.

์ˆซ์ž ๋˜๋Š” ๋…ผ๋ฆฌ (7 ๋ฐ”์ดํŠธ)์—์„œ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜

์ด๊ฒƒ์€ ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ( ์ด ํŠธ์œ— ์—์„œ)

x[0]=''

R ์€ ํด๋ž˜์Šค ์˜ ์ธ ๋ฒกํ„ฐ x๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค . ๋”ฐ๋ผ์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์™€ ํ˜ธํ™˜๋˜๋„๋ก ํด๋ž˜์Šค์— ์บ์ŠคํŠธ ๋ฉ๋‹ˆ๋‹ค . ๋‹ค์Œ์œผ๋กœ, ๋„ฃ์–ด ๊ฐ„๋‹ค ์ ์ ˆํ•œ ์žฅ์†Œ์— โ€ฆํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค (์ด ํŠธ๋ฆญ๋„ ํ•จ๊ป˜ ์ž‘๋™ ์กด์žฌํ•˜์ง€ ์•Š๋Š” , , , , ๋“ฑ). ๊ฒฐ๊ณผ์ ์œผ๋กœ ํด๋ž˜์Šค์—์„œ๋งŒ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค.''characterxcharacter''0InfNaNNANULLx

x=1:3;x[0]=''๋ฐ˜ํ™˜ "1" "2" "3"๋ฐ x=c(TRUE,FALSE);x[0]=''๋ฐ˜ํ™˜ "TRUE" "FALSE".

์ž‘์—… ๊ณต๊ฐ„์— ์ด๋ฏธ ๋ฌธ์ž ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉด ''๋ฐ”์ดํŠธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋Œ€์‹ ์ด ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ์˜ˆ x[0]=y!

ํŠน์ • ์กฐ๊ฑด (6 ๋ฐ”์ดํŠธ)์—์„œ ์ˆซ์ž ๋˜๋Š” ๋…ผ๋ฆฌ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜

J.Doe ๋Š” ์ฃผ์„์—์„œ 6 ๋ฐ”์ดํŠธ ์†”๋ฃจ์…˜์„ ์ง€์ ํ–ˆ์Šต๋‹ˆ๋‹ค.

c(x,"")

x์›์ž ์ธ ๊ฒฝ์šฐ ์›์ž ๋ฒกํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค . ์ด ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜์˜ ์š”์†Œ๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ (4 ๋ฐ”์ดํŠธ)์—์„œ ์ˆซ์ž๋กœ ๋ณ€ํ™˜

์œ„์—์„œ ํŽ‘ํ‚ค ์ธ๋ฑ์‹ฑ ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ x[0]=3์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ๋” ๋น ๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

x=+x

์–‘์˜ ์—ฐ์‚ฐ์ž๋Š” ์•”์‹œ ์ ์œผ๋กœ ๋ฒกํ„ฐ๋ฅผ ์ˆซ์ž ๋ฒกํ„ฐ๋กœ ๋‹ค์‹œ ์บ์ŠคํŒ…ํ•˜๋ฏ€๋กœ์ด TRUE FALSE๋ฉ๋‹ˆ๋‹ค 1 0.