[英]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.