0

规则是:for(i in 1:10){v[i]=f(q,m)}。f(q,m) 是根据输入 q, m 在区间内生成随机输出的函数。'v' 是向量。

以这种方式指定 v 的组件后,我可以输入 v 并返回向量。我想做的是定义一个函数,它接受输入 q,m 并返回向量 v。

原因是最终我希望能够绘制 v 的平均值,范围在变量 q 上。但我认为,我需要一个首先返回 v 的函数。因此,任何有关如何定义此类功能的建议都将不胜感激。

谢谢。

4

3 回答 3

2

使用 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)
于 2012-04-14T22:48:43.593 回答
1

完全按照您的代码:

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))
于 2012-04-14T22:15:45.327 回答
0

它可能等同于所提供的解决方案(并且没有完全解决缺失的细节),但是您尝试过吗?

Vf <- Vectorize(f)
于 2012-04-15T01:11:22.533 回答