【R言語】evalとparseを使ったループ処理

さて、R関係の初記事です。

もともとSASを使っていてSASマクロを使ったループが大変便利だったわけです。

Rはそこまで柔軟ではないものの、次の方法でループ処理できます。

loop1 <- c("A","B","C")
A <- c(1,1,1)
B <- c(2,2,2)
C <- c(3,3,3)
for (i in 1:length(loop1)){
  print(paste0("ループ",i,"回目"))
  codeX <- paste0("test <- ",loop1[i], ";"
                  ,"print(sum(test))")
  eval(parse(text=codeX))
}

結果はこちら

[1] "ループ1回目"
[1] 3
[1] "ループ2回目"
[1] 6
[1] "ループ3回目"
[1] 9

ポイントはeval()とparse()です。 文字列としてcodeXに放り込んだコードを実行してくれます。

他にも方法あるでしょうが、1つの方法として。

本ブログは個人メモです。 本ブログの内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。