yuu_nkjm blog
2010-07-15(Thu) [長年日記]
[R言語] Rのコードが書かれた文字列を評価(eval)する
イディオム
eval(parse(text="評価対象文字列"))
使用例
データフレームxのSEX,HEIGHT,WEIGHTというベクトルに対してsummary関数を適用する.
sex <- c("F","F","M","M","M");
height <- c(158,162,177,173,166);
weight <- c(51,52,72,57,64);
x <- data.frame(SEX=sex, HEIGHT=height, WEIGHT=weight);
i=1
z <- as.list(NULL)
for(col in c("SEX","HEIGHT","WEIGHT")){
z[[i]] <- eval(parse(text=paste("summary(x$",col,")",sep="")))
i=i+1
}
z
> [[1]]
> F M
> 2 3
> [[2]]
> Min. 1st Qu. Median Mean 3rd Qu. Max.
> 158.0 162.0 166.0 167.2 173.0 177.0
> [[3]]
> Min. 1st Qu. Median Mean 3rd Qu. Max.
> 51.0 55.0 57.0 59.8 64.0 72.0
注意1
どういうコンテキストでevalが行われるのか良く分からないと言う人は,"eval.parent"といったキーワードでググってみると良いかも.
注意2
上記のサンプルコードのforループ内で,
という様には書けないけど,
summary(x$col)
とは書けるので,良い例ではなかったな.
summary(x[[col]])
参考ページ
- https://www.google.co.jp/ ×232
- https://www.google.com/ ×13
- https://www.bing.com/ ×3
- http://search.yahoo.co.jp/ ×1
- https://www.google.com.hk/ ×1
- R eval ×9 / eval R ×7 / R言語 eval ×4 / R 文字列 eval ×3 / eval() R ×2 / eval R言語 ×2 / R言語 方程式 ×2 / eval(parse ×2 / R eval 文字列 ×2 / R eval 式 評価 ×2 / r 評価 文字列 ×1 / r eval 文字列 ×1 / EXCEL 関数 式の評価 -マクロ -VBA EVAL ×1 / r.eval 使い方 ×1 / R eval paste text ×1 / R 文字列 ×1 / “文字列を評価“ “r“ ×1 / eval r ×1 / R 文字列を評価する ×1 / uwsc EVAL ×1 / aval R ×1 / R言語 parse ×1 / r 文字列 eval ×1 / R言語eval ×1 / RVAL R ×1 / c言語 r SEXP 文字列 ×1 / eval(parse(text=paste( ×1 / R 文字列の評価 ×1 / R言語 eval ×1 / R eval parse ×1 / r eval parse text=paste ×1 / eval R 文字列 ×1 / , eval(parse(text=paste ×1 / R evalq( ×1 / R ベクトル eval ×1 / eval.parent r言語 ×1 / eval(r) ×1 / R eval ベクトル 文字列 ×1 / eval(parse(***)) ×1 / eval +R ×1 / R の eval ×1 / "R言語" "文字列" "検索" ×1 / R 文字の評価 ×1 / R eval text ×1 / r eval ×1 / R言語 文字列 評価 ×1 / R eval 使い方 ×1 / R eval(parse(text= ×1 / r eval(parse ×1 / R eval 評価 ×1 / R 文字列 変換 eval ×1 / eval(parse(text ×1 / uwsc eval ×1 / r言語 eval ×1 / R eval paste ×1 / eval parse paste ×1 / R Java eval ×1 / r eval(parse ×1