gpt4 book ai didi

r - 在 R 函数中使用 "prob"包时出错

转载 作者:行者123 更新时间:2023-12-04 04:39:41 27 4
gpt4 key购买 nike

我正在尝试编写一个使用 prob 的函数用于计算条件概率的包。使用该函数时,我继续遇到相同的错误,指出无法找到函数内的对象。

下面是一个可重复的示例,其中我在没有函数的情况下计算条件概率,然后尝试使用该函数产生相同的结果。我不确定该错误是由于 prob 包的限制还是我的错误造成的。

# Load prob package
library(prob)

# Set seed for reproducibility
set.seed(30)

# Sample data frame
sampledata <- data.frame(
X <- sample(1:10),
Y <- sample(c(-1, 0, 1), 10, replace=TRUE))

# Set probability space
S <- probspace(sampledata)

# Subset Y between -1 and 0
A <- subset(S, Y>=-1 & Y<=0)

# Subset X greater than 6
B <- subset(S, X>6)

# Compute conditional probability
P <- prob(A, given=B)

上面的代码产生以下概率:
> P
[1] 0.25

尝试编写一个函数来计算相同的概率:
# Create function with data frame, variables, and conditional inputs
prob.function <- function(df, variable1, variable2, state1, state2, cond1){
s <- probspace(df)
a <- subset(s, variable1>=state1 & variable1<=state2)
b <- subset(s, variable2>cond1)
p <- prob(a, given=b)
return(p)
}

# Demonstrate the function
test <- prob.function(sampledata, Y, X, -1, 0, 6)

此函数给出以下错误:
Error in eval(expr, envir, enclos) : object 'b' not found

您能提供的任何帮助都会很棒。

谢谢!

最佳答案

这看起来像是 prob 中的错误.

当我在 Vanilla R 中运行它时,我得到了同样的错误。但是当我创建一个对象时 b在我的工作区中,错误消失了:

> print(b)
Error in print(b) : object 'b' not found
> test <- prob.function(sampledata, Y, X, -1, 0, 6)
Error in eval(expr, envir, enclos) : object 'b' not found
>
> b <- "dummy variable"
> print(b)
[1] "dummy variable"
> test <- prob.function(sampledata, Y, X, -1, 0, 6)
> test
[1] 0.25
>

作为临时解决方法,只需创建一个虚拟 b在您当前的环境中。

至于bug,如果你查看 prob.default的来源(在上面的示例中, prob(a, given=b) 最终调用的是什么),您将看到以下部分:
if (missing(given)) {
< cropped >
}
else {
f <- substitute(given)
g <- eval(f, x) <~~~~
if (!is.logical(g)) { <~~~~
if (!is.data.frame(given)) <~~~~
stop("'given' must be data.frame or evaluate to logical")
B <- given

}
...
< cropped >
}

它是从 g 跳来的至 given ,也许是不经意间?我会联系包维护者,因为这可能是一个疏忽。

关于r - 在 R 函数中使用 "prob"包时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19082170/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com