Richie が書いたように、貼り付けは最も簡単な解決策のようです。より完全な例を次に示します。
myvar <- "AGE"
f <- as.formula(paste("dat ~ contrasts *", myvar, "+ Error(ID/contrasts)"))
x <- summary( aov(f, data=set) )
set$myvar
...そして、あなたが書く代わりに
set[[myvar]]
より高度な答えは、式は実際には "~" 演算子の呼び出しであるというものです。呼び出しを直接変更できます。これは、ループ内で少し効率的になります。
> f <- dat ~ contrasts * PLACEHOLDER + Error(ID/contrasts) # outside loop
> f[[3]][[2]][[3]] <- as.name(myvar) # inside loop
> f # see what it looks like...
dat ~ contrasts * AGE + Error(ID/contrasts)
マジック [[3]][[2]][[3]] は、置換する数式の部分を指定します。数式は実際には次のようになります (解析ツリー)。
`~`(dat, `+`(`*`(contrasts, PLACEHOLDER), Error(`/`(ID, contrasts))
式の索引付けをいじってみると、次のことが理解できます。
> f[[3]]
contrasts * AGE + Error(ID/contrasts)
> f[[3]][[2]]
contrasts * AGE
更新:これにはどのような利点がありますか? 特に、データの列名を制御しない場合は、より堅牢です。myvar <- "AGE GROUP"
現在の貼り付けソリューションが機能しない場合。そしてmyvar <- "file.create('~/OWNED')"
、深刻なセキュリティ上のリスクがある場合...