逻辑索引中“ =”和“ ==”之间的区别

时间:2018-07-12 21:22:17

标签: r

x <- -3:3
x[x=2]/x[x==2] = -1

为什么分子x[x=2]等于-2

有人可以在逻辑索引中解释===之间的区别吗?

1 个答案:

答案 0 :(得分:3)

=在这里进行分配,而不是进行比较。进行分配时,默认情况下会返回右侧值。观察

print(x=2)
# [1] 2
print(x=100)
# [1] 100
print(x<-2)
# [1] 2

因此与

相同
x[2]/x[x==2]

x[2]
# [1] -2

所以-2/2是-1。

通常应避免使用=,除非将参数命名为传递给函数的名称。使用<-进行分配,使用==进行比较。这样,当您在=中看到[]时,它会跳为“错误”