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]])
とは書けるので,良い例ではなかったな.

参考ページ

本日のリンク元
その他のリンク元
検索

トップ «前の日記(2010-07-14(Wed)) 最新 次の日記(2010-07-16(Fri))» 月表示 編集 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|