0

我有一个 vector y,它是一系列正整数。对于 中的每个值y,我想计算:

  • z <- 1/y,
  • 但是对于y1 的元素,我需要设置z为零。
  • 最后,我需要一个z为零的向量,因为y它是 1,而1/y对于y不是 1。

我怎样才能做到这一点?

4

3 回答 3

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
于 2012-04-29T07:56:58.107 回答
2

使用逻辑索引很容易做到这一点:

z <- 1/y  # will have some Inf values but not throw an error
z[y==0] <- 0   # changes the Inf's to 0
于 2012-04-29T13:01:02.737 回答
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)
于 2012-04-29T08:24:33.810 回答