【发布时间】:2017-10-02 19:36:57
【问题描述】:
编辑:虽然这个问题与许多统计学专业的学生有关(尤其是那些有其他编程语言经验的学生),但它已被关闭。不过,给出的提示非常有帮助。可以使用 ifelse 函数,如下所示:
qbern24 <- function(x, p) {
ifelse(x <= 0, -Inf,
ifelse(x > 0 & x <= 1-p, 0,
ifelse(x > 1-p & x <= 1, 1,
Inf)
)
)
}
如果你想矢量化其他东西,祝你好运。
/编辑
标准库中的函数将采用“数字向量”并返回数字向量,但我的没有。如何编写 qbern04 以便可以像使用 qnorm 一样使用它,而不必使用 as.numeric 和 lapply?
qbern <- function(x, p) {
if (x <= 0) {
-Inf
} else if (x > 0 & x <= 1-p) {
0
} else if (x > 1-p & x <= 1) {
1
} else {
Inf
}
}
qbern04 <- function(x) {
qbern(x, 0.4)
}
U <- runif(1e6)
X <- as.numeric(lapply(U, qbern04))
Z <- qnorm(U)
【问题讨论】:
-
矢量化你的函数,参见
?vector、?`[`等。
标签: r