switch()
関数の引数の値に応じて異なる計算をトリガーするステートメントを R の関数に使用したいと思います。
たとえば、Matlab では次のように記述して実行できます。
switch(AA)
case '1'
...
case '2'
...
case '3'
...
end
このポスト - switch() ステートメントの使用法- の使用方法を説明していることswitch
がわかりましたが、単純なmean
.
switch()
関数の引数の値に応じて異なる計算をトリガーするステートメントを R の関数に使用したいと思います。
たとえば、Matlab では次のように記述して実行できます。
switch(AA)
case '1'
...
case '2'
...
case '3'
...
end
このポスト - switch() ステートメントの使用法- の使用方法を説明していることswitch
がわかりましたが、単純なmean
.
まあ、switch
おそらくこのように動作することを意図したものではありませんが、次のことができます。
AA = 'foo'
switch(AA,
foo={
# case 'foo' here...
print('foo')
},
bar={
# case 'bar' here...
print('bar')
},
{
print('default')
}
)
...各ケースは式です-通常は単純なものですが、ここではカーリーブロックを使用して、そこに必要なコードを詰め込むことができます...
それらのさまざまな切り替え方法...
# by index
switch(1, "one", "two")
## [1] "one"
# by index with complex expressions
switch(2, {"one"}, {"two"})
## [1] "two"
# by index with complex named expression
switch(1, foo={"one"}, bar={"two"})
## [1] "one"
# by name with complex named expression
switch("bar", foo={"one"}, bar={"two"})
## [1] "two"
この例が役立つことを願っています。中括弧を使用して、すべてが switcher changer guy に含まれていることを確認できます (技術用語はわかりませんが、= 記号の前にある用語は、何が起こるかを変更します)。私は switch をより制御された一連のif () {} else {}
ステートメントと考えています。
スイッチ機能は同じですが、提供するコマンドは毎回異なります。
do.this <- "T1"
switch(do.this,
T1={X <- t(mtcars)
colSums(mtcars)%*%X
},
T2={X <- colMeans(mtcars)
outer(X, X)
},
stop("Enter something that switches me!")
)
#########################################################
do.this <- "T2"
switch(do.this,
T1={X <- t(mtcars)
colSums(mtcars)%*%X
},
T2={X <- colMeans(mtcars)
outer(X, X)
},
stop("Enter something that switches me!")
)
########################################################
do.this <- "T3"
switch(do.this,
T1={X <- t(mtcars)
colSums(mtcars)%*%X
},
T2={X <- colMeans(mtcars)
outer(X, X)
},
stop("Enter something that switches me!")
)
これは関数内にあります。
FUN <- function(df, do.this){
switch(do.this,
T1={X <- t(df)
P <- colSums(df)%*%X
},
T2={X <- colMeans(df)
P <- outer(X, X)
},
stop("Enter something that switches me!")
)
return(P)
}
FUN(mtcars, "T1")
FUN(mtcars, "T2")
FUN(mtcars, "T3")