2012-04-29 22 views
0

ベクトルはyです。これは一連の正の整数です。 yの各値について、私は計算したい:2つの異なる部分の関数を計算する

  • z <- 1/y
  • しかしyが、私はzがゼロに設定する必要が1であることの要素について。
  • 最後に、私は私はそれをどのように行うことができます

    yゼロとzのベクトルが1

yのための1と 1/yではありません必要がありますか?

+0

申し訳ありませんが、私の質問はあまりにも単純化されました。 yは、整数を持つ行列です.z <-1/yを計算し、yがゼロの場合はzをゼロに設定します。 ifelseを使用しようとしましたが、エラーが発生しました:NaNが生成されました – zca0

答えて

2

を言うことができます論理的なインデックス作成でこれを行うのはとても簡単です:

z <- 1/y # will have some Inf values but not throw an error 
z[y==0] <- 0 # changes the Inf's to 0 
4

使用ifelseとワンステップでそれを行う:Andrieが行列に言ったことの拡張

y <- 1:5 
z <- ifelse(y==1, 0, 1/y) 

cbind(y, z) 
    y   z 
[1,] 1 0.0000000 
[2,] 2 0.5000000 
[3,] 3 0.3333333 
[4,] 4 0.2500000 
[5,] 5 0.2000000 
1

...

y <- matrix(1:25, ncol=5) # define the matrix y 
z <- matrix(ifelse(y==1, 0, 1/y), ncol=ncol(y)) 

または私はちょうど

z <- matrix(ifelse(y==1, 0, 1/y), ncol=5) 
関連する問題