如何在不使用R中的for循环的情况下获得相同的结果

Ben*_*dan 1 optimization for-loop r vector subtraction

我听说R中的循环很慢,所以我想知道如何简化这个以加快速度.我想从连接中的每个元素中减去1,但如果它已经为零,我不想继续减去并使其为负数.

for(i in 1:length(connections)) {
    if(connections[i] > 0) {
      connections[i] = connections[i] - 1
    }
    if(connections[i] < 0) {
      connections[i] = 0
    }
  }
Run Code Online (Sandbox Code Playgroud)

Aar*_*ica 7

一种方法是保持最大值(连接 - 1)和0.

pmax(connections - 1, 0)
Run Code Online (Sandbox Code Playgroud)