Contents

1
2 substitute eval
3 parse
4 豢豌


1 #

R LISP企朱 襦蠏碁覦 語伎 觜襦. LISP 瑚概讌 郁規襯 襷れ伎 語企 襦蠏碁 襦蠏碁 螳ロ 蠍磯レ 螳讌螻 . 願 覃 襦蠏碁覦企手 R 襷谿螳讌 蠍磯レ .

LISP REPL企朱 覦朱 願 R 襷谿螳讌. REPL企 所(read)-螳螻(evaluate)-豢ロ(print) 螻殊 覦覲(loop)る 詞企. 襯 れ 危エ覲伎. 螳 1 + 2企手 レ 覃 願 蠏碁 覓語伎 訖企. R 願 襾殊 R 覓碁 襷豢 曙企れ碁. 螻殊 (parsing)企手 . 煙 蟇一覃 1 + 1 +朱 企 1螻 2襯 蟆譯殊 豌襴朱 覈轟 . 蠍郁讌螳 暑 螻殊企. 蠏 れ 1螻 2襯 蟆 3企朱 蟆郁骸襯 れ襦 詞企企 蟆 螳螻 襷讌襷朱 覃伎 3 覲伎譯朱 蟆 豢レ企.

2 substitute eval #

substitute 襦蠏碁 朱襯 焔螻 螳讌 襦 伎. 企 朱 蠏 企れ 伎朱 覦蠖 .
> substitute(x + 1)
x + 1
> substitute(x + 1, list(x = 3))
3 + 1

襦蠏碁 朱襯 焔螻 螳讌 蟆 覓伎 碁螳 蟾? 螳讌 蟆曙磯ゼ 螳 . 襦蠏碁 朱螳 螳 譟一螻 苦 蟆曙, 襦蠏碁 朱襯 一危磯 蟆曙磯. 豌 覯 讌 蟆曙磯ゼ 危エ覲伎.
> code.injection <- function(x){ a <- 5 ; eval(substitute(x))  }
> a <- 10
> code.injection(a + 1)
6

貊襯 危危る 襾殊 覯(scope)朱 螳 危危 螳 . R 覈 企 蠍 覯襯 螳讌螻 . 襦蠏碁 a 覯 螳 企豌 覲伎伎襷 覯螳 るゴ. code.injection a 蠏 企襯 蠍 覯襦 螳. 企 蟆 讌 覲(local variable)企手 覿襯碁. code.injection 覦蟾レ a 覈 螻褐 蠍 覯螳 . 企 蟆 覲(global variable)企手 . 襷 覲 讌覲螳 螻旧ヾ 蟆曙一 R 讌覲襦 伎.

code.injection(a+1)企手 覃 a+1 code.injection 朱 れ願. substitute 覦蠖豺 伎 覈伎殊 朱 讌覲 伎朱 豌危. code.injection a朱 企 5朱 螳 螳讌襦 伎朱襦 a襯 5襦 覦蠖譴.

eval 螳襯 企. substitute a + 1企朱 襦蠏碁 朱螳 5 + 1襦 覦螻 企ゼ 螳 6企朱 蟆郁骸螳 る 蟆企.

煙 覓語伎 覓碁 襷豢 企 蟆企手 . deparse 蟇郁掌襦 企 伎 覓語企 覦蠖譴.
> pretty.print <- function(x) cat( deparse( substitute(x) ), x, '\n' )
> pretty.print(sqrt(10))
sqrt(10) 3.162278 

cat 磯殊る 伎れ 襦 豢ロ伎朱 . '\n' 譴覦蠖 詩. 蠏碁蟾 sqrt(10)企朱 覈轟 ロ覃 substitute(x) 螳螳 譴螻 deparse 覓語企 覲. cat 願 豢ロ. 蠏 れ x 伎 螳 蟆郁骸襯 豢ロ螻 襷讌襷朱 譴 覦蠖 . 蠏碁襯 蠏碁Μ蟇磯 蟆郁骸襯 豢ロ 襯 襷 覃 ク襴.

3 parse #

deparse朱 朱襦 轟壱 parse朱 . parse 覓語伎 燕伎 襦蠏碁朱 覦蠖譴. 企蟆 焔 襦蠏碁 eval 襦 螳 .
> eval(parse(text='1+2'))
[1] 3

substitute るジ substitue 襦蠏碁 朱螳 螳讌 襦 覦 parse 蟆郁骸 expression企朱 螳豌企朱 るゴ. 願 譬 覩碁 谿伎企襦 朱 蠏碁蟆襷 .

谿場覦蠑瑚鍵 伎朱 gsub襯 伎伎 %% <<- %% + 1企朱 覓語伎 螳螳 'a <<- a + 1', 'b <<- b + 1','c <<- c + 1'襦 覦蠖譴れ ろ 蟆企.

> a <- 3
> b <- 4
> c <- 5
> mapply(function(x) eval(parse(text=gsub('%%', x, '%% <<- %% + 1'))), 
+ c('a','b','c'))
a b c 
4 5 6 
> a
[1] 4

襦蠏碁 讌る慨覃 觜結訣 襦蠏碁 copy & paste伎 朱襷 螻豎 磯 蟆曙郁 襷 parse襯 伎覃 企 螳 .

4 豢豌 #