簡體   English   中英

我已經按照一定的規則定義了一個向量。 如何定義輸出矢量的函數?

[英]I have defined a vector according to a certain rule. How do I define a function that outputs the vector?

規則是: for(i in 1:10){v[i]=f(q,m)} f(q,m)是根據輸入q,m在一定間隔內生成隨機輸出的函數。 “ v”是向量。

以這種方式指定v的成分后,我可以鍵入v並返回向量。 我想做的是定義一個函數,該函數接受輸入q,m並返回向量v。

原因是最終我希望能夠繪制變量q范圍內的v的平均值。 但是我認為我需要一個首先返回v的函數。 因此,有關如何定義此類功能的任何建議將不勝感激。

謝謝。

使用apply系列函數可以很好地完成值的生成。 vapply鮮為人知,但比sapply更為有效,因此我在這里進行了推廣。 numeric(1)指定f的預期結果是:

# Emulating your function f
f <- function(q, m) runif(1, q, m)

# Generator function
g <- function(n=10, q, m) vapply(seq_len(n), function(i) f(q, m), numeric(1))

# Try it out
q <- 3
m <- 5
v <- g(10, q, m)

# or, if f is defined as above, simplify to:
v <- runif(10, q, m)

完全遵循您的代碼:

makeVector <- function(q, m) { 
  v <- c()
  for (i in 1:10) {
    v[i] <- f(q, m)
  }
  v
}

或者,更優雅:

makeVector <- function(q, m) sapply(1:10, function(q, m) f(q, m))

它可能與提供的解決方案等效(並且無法完全解決缺少的細節),但是您是否嘗試過?

Vf <- Vectorize(f)

暫無
暫無

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

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