ベクトル v が与えられた場合、v のすべてのエントリの積を計算する関数を書きたいと思います (R にはこれを行う関数がありますが、自分で書きたいと思います)。
私は試しましたが、ベクトル内の要素の積を取得するにはどうすればよいですか?
product <- function(v){
out <- 1
for(i in 1:length(v)){
out <- out*v[i]
}
out
}
ベクトル v が与えられた場合、v のすべてのエントリの積を計算する関数を書きたいと思います (R にはこれを行う関数がありますが、自分で書きたいと思います)。
私は試しましたが、ベクトル内の要素の積を取得するにはどうすればよいですか?
product <- function(v){
out <- 1
for(i in 1:length(v)){
out <- out*v[i]
}
out
}
関数への引数としてを使用する場合...
、複数のオブジェクトまたは 1 つだけを渡すことができます。関数内では、リストに変換し、関数 ( ) をリストに再帰的Reduce
に適用するために使用できます。*
を組み合わせるとlist
、これを非常に一般的なものにすることができます。以下は、ベクトル、2 つ以上の数値、またはベクトルと単一の数値の混合で機能します。unlist
as.list
> product <- function(...) Reduce("*", as.list(unlist(list(...))))
> product(2, 7, 3)
[1] 42
> product(c(2, 7, 3))
[1] 42
> product(2, c(7, 3))
[1] 42
Recall
末尾再帰の使用:
prd2 <- function(x)
if(length(x) == 2) { x[1] *x[-1] } else x[1] * Recall(x[-1])
prd2(c(2,3,4))
#[1] 24