簡體   English   中英

r 數組的長度

[英]Length of r array

我嘗試從第二個循環返回 Y 數組。 我希望它是 (n - [k + 2]) 長度但我得到 n 長度數組的 output

a1q1 <- function (n , j , k , m, X0) {
  X <- numeric(length=n)
  Xn <- X0
  for (i in 1:n) {
    Xn <- (103515245*Xn + 12345) %% 2^32
    X[i] <- Xn
  }
  Y <- numeric(length=n - k - 1)
  for (i in k + 2:n) {
    Y[i - k - 1] <- (X[i - j] + X[i - k]) %% m
  }
  return (Y)
}

Z <- a1q1(100, 5, 90, 11, 0)
Z
# [1]  6  5  8  3  1 10  1  1  9  6  2  2  5  7 NA NA NA NA NA NA NA NA NA NA NA NA
# [27] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
# [53] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
# [79] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

這也經常抓住我。 您需要在第二個for循環中將括號放在k+2兩邊。試試下面的小調整:

  for (i in (k+2):n) {
    Y[i-k-1] <- (X[i-j] + X[i-k]) %% m
  }

@langtang 已經展示了你需要做什么。

問題是運算符優先級:

> 1+2:3
[1] 3 4

這里我們說“將 1 添加到序列2:3

> (1+2):3
[1] 3

這里我們說的是“創建一個從1+2到 3 的序列”。

即使您不需要使用括號,這樣做通常也是一個好主意。 明智的使用使代碼更易於閱讀。 因此,例如,如果打算實際使用1+2:3 ,那么寫1+(2:3)會更好。 通過這種方式,很明顯發生了什么:

(1+2):3

對比

1+(2:3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM