2012-04-29 25 views
0

我有一個向量y,這是一系列正整數。對於y每個值,我想計算:在兩個不同的部分計算函數

  • z <- 1/y
  • 但元素y是1,我需要設置z爲零。
  • 最後,我需要的z與零y是1 1/yy一個向量不是1

我怎麼能這樣做?

+0

對不起,我的問題太簡單了。假設y是一個帶有整數的矩陣,計算z <-1/y,如果y是零,則設置z零。我試圖使用ifelse,但得到錯誤:NaNs產生 – zca0 2012-04-29 08:07:52

回答

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並做一步到位:

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

擴展什麼Andrie已經到矩陣表示...

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)