ベクトルの各要素に個別に適用すると、私の関数は sapply を使用した場合とは異なる結果になります。それは私を夢中にさせています!
私が使用しているアイテム: 別の関数が呼び出された引数のこの (簡略化された) リスト:
f <- as.list(match.call()[-1])
> f
$ampm
c(1, 4)
これを複製するには、次を実行できます。
foo <- function(ampm) {as.list(match.call()[-1])}
f <- foo(ampm = c(1,4))
これが私の機能です。文字列から 'c(...)' を取り除くだけです。
stripConcat <- function(string) {
sub(')','',sub('c(','',string,fixed=TRUE),fixed=TRUE)
}
単独で適用すると、そのように機能します。これが私が望むものです:
> stripConcat(f)
[1] "1, 4"
しかし、sapply と一緒に使用すると、まったく別の結果が得られますが、これは望ましくありません。
> sapply(f, stripConcat)
ampm
[1,] "c"
[2,] "1"
[3,] "4"
Lapply も動作しません:
> lapply(f, stripConcat)
$ampm
[1] "c" "1" "4"
また、他の適用機能もありません。これは私を夢中にさせています.lapplyとsapplyは、リストまたはベクトルの要素への繰り返し適用と同じであるはずだと思っていました!