数値入力を処理する関数を作成し、各列に対して一連の計算を行います。 Id 'はベクトルと行列の入力をシームレスに処理し、入力と同じクラスを返す関数と似ています。私はこの方法と同じように動作するように探してdiff()
作品。これをRで実装するための正規のパターンがありますか、あるいは入力のクラスに対してif/else処理が必要ですか?可変次元入力を扱う正式なパターンR
私は今のところ出ている最高です:
bar <- function(x) {
m <- as.matrix(x)
m <- apply(m, 2, function(z) log(diff(z)))
if (is.null(dim(x))) m <- drop(m)
return(m)
}
私は少し混乱しています。 'max(diff(x))'を計算したいのであれば、それをベクトルに適用した結果はスカラー(すなわち、ただ一つの数、diffの最大値)とそれを行列に適用した結果ベクトル(行列の各列に1つの数値)です。なぜ、最初のケースでベクトルを返し、2番目のケースで行列を返すのですか?あなたのコードから 'if'行を削除するだけで、必要なものを手に入れませんか? –
@Oriol、悪いです。正しく紹介するための例を更新しました。私が望む実際の計算はかなり関わっており、ここで繰り返す価値があるとは思わない – Ethan
https://stackoverflow.com/questions/13039997/writing-generic-function-for-tables-that-works-when- vect-be-be-be-be-vect?rq = 1 – Ethan