在不使用 R 中的循环的情况下使用列向量进行运算

Operation with a column vector without using a loop in R

我想在不使用循环的情况下对向量执行运算。操作如下:

这就是我在 R 中编码的方式

  meanx <- mean(rankx)
  Numerador <- (rankx[] - meanx)*(rankx[+1] - meanx)

这是输入:

> dput(rankx)
c(15, 11, 12, 30, 58, 14, 41, 10, 57, 32, 28, 52, 61, 18, 54, 
37, 19, 7, 29, 66, 5, 47, 25, 6, 50, 65, 62, 23, 40, 63, 42, 
64, 38, 56, 45, 17, 8, 59, 55, 67, 24, 60, 2, 35, 44, 20, 3, 
39, 4, 31, 26, 51, 21, 22, 53, 33, 46, 9, 16, 36, 13, 27, 34, 
48, 1, 49, 43)

例如,对于第一种情况,它将是:(15 - mean(rankx))(11 - mean(rankx)) 对于下一个:(11 - mean(rankx))(12 - mean(rankx))

我不确定如何引用第二个元素,我的错误在 rankx[+1]

知道如何在不使用循环的情况下解决这个操作吗?

您可以使用dplyr::lead

rankx[+1]等同于rankx[1],也就是15.

如果你想要一个被替换为一个单位的 rankx 副本,请使用 dplyr::lead(rankx) - 像这样:

rankx <- c(15, 11, 12, 30, 58, 14, 41)

dplyr::lead(rankx)
#> [1] 11 12 30 58 14 41 NA

meanx <- mean(rankx)
Numerador <- (rankx - meanx)*(dplyr::lead(rankx) - meanx)

Numerador
#> [1]  161.30612  205.87755  -57.40816  133.16327 -381.12245 -179.55102         NA

reprex package (v1.0.0)

于 2021-04-20 创建