我有一个 vector y
,它是一系列正整数。对于 中的每个值y
,我想计算:
z <- 1/y
,- 但是对于
y
1 的元素,我需要设置z
为零。 - 最后,我需要一个
z
为零的向量,因为y
它是 1,而1/y
对于y
不是 1。
我怎样才能做到这一点?
我有一个 vector y
,它是一系列正整数。对于 中的每个值y
,我想计算:
z <- 1/y
,y
1 的元素,我需要设置z
为零。z
为零的向量,因为y
它是 1,而1/y
对于y
不是 1。我怎样才能做到这一点?
使用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
使用逻辑索引很容易做到这一点:
z <- 1/y # will have some Inf values but not throw an error
z[y==0] <- 0 # changes the Inf's to 0
将安德烈所说的扩展到矩阵......
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)