次のリストを検討してください。
l <- list(a=1:10,b=1:10,c=rep(0,10),d=11:20)
次に、このコード例を検討してください (実際のより大きなコードの代表)。名前に基づいてリスト内の適切な要素を選択するだけです。
パラメーター:
オブジェクト: 最大 4 つの要素 (つまり、4 つ未満の場合もあります) を持つリスト。要素は常に a、b、c、および d と呼ばれますが、リスト内で常に同じ順序で表示されるわけではありません。
x: 選択する要素の名前 (つまり、a、b、c、または d)
slct <- function(object,x) {
if (x=="a") {
object$a
} else if (x=="b") {
object$b
} else if (x=="c") {
object$c
} else if (x=="d") {
object$d
}
}
slct(l,"d")
このアプローチは、要素が 4 つではなく数百ある場合、実行不可能になります。さらに、要素が毎回同じ順序で表示されるわけではないため、番号 (object[[1]] など) に基づいて選択することはできません。では、上記のコードを短くするにはどうすればよいでしょうか。
SASでマクロアプローチを考えていたのですが、もちろんRではうまくいきません。
slct <- function(object,x) {
object$x
}
object$a
slct(object=l,x="a")
上記のコードよりも少ないコードで機能させるには、object$x を何に置き換える必要がありますか?